WebProxy-nin URI konstruktoru yalnız son nöqtəni seçir; Credentials sahəsini həmin URI-nin istifadəçi məlumatı ilə doldurmur. Tətbiq tərəfindən təsdiqlənmiş HTTP proxy URL-i üçün:

var uri = new Uri(proxyUrl);
var endpoint = new UriBuilder(uri)
{
    UserName = "",
    Password = ""
};

var proxy = new System.Net.WebProxy(endpoint.Uri);

if (uri.UserInfo.Length > 0)
{
    var parts = uri.UserInfo.Split(new[] { ':' }, 2);
    var username = Uri.UnescapeDataString(parts[0]);
    var password = parts.Length == 2
        ? Uri.UnescapeDataString(parts[1])
        : "";

    proxy.Credentials =
        new System.Net.NetworkCredential(username, password);
}

proxyUrl verilən proxy URL-idir, sayt URL-i deyil. Uri onun authority hissəsini təhlil edir, UriBuilder isə istifadəçi məlumatını WebProxy-də saxlanan son nöqtədən çıxarır.

Komponentləri deşifrə etməzdən əvvəl ilk hərfi iki nöqtədən bölün. Bu, istifadəçi adındakı kodlanmış iki nöqtəni qoruyur və paroldakı əlavə iki nöqtələri parolda saxlayır. Hər komponenti bir dəfə deşifrə edin; parolu Base64 ilə kodlamayın, əvəzində URL escaping tətbiq edin.

Nəhayət, proxy-ni həmin HTTP handler sorğulara başlamazdan əvvəl nəzərdə tutulan handlerə təyin edin. Yalnız obyektin yaradılması başqa müştərinin marşrutlaşdırma siyasətini dəyişmir.

Əlaqəli məqalələr