WebProxy se URI-konstruktor kies 'n eindpunt; dit vul nie Credentials uit daardie URI se gebruikersinligting nie. Vir 'n toepassing-gevalideerde HTTP-proxy-URL:

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 is die verskafde proxy-URL, nie die webwerf-URL nie. Uri ontleed die authority, terwyl UriBuilder die gebruikersinligting uit die eindpunt verwyder wat in WebProxy gestoor word.

Deel by die eerste letterlike dubbelpunt voordat die komponente gedekodeer word. Dit bewaar 'n geënkodeerde dubbelpunt in die gebruikersnaam en hou bykomende wagwoord-dubbelpunte in die wagwoord. Dekodeer elke komponent een keer; moenie die wagwoord Base64-enkodeer as plaasvervanger vir URL-ontsnapping nie.

Laastens, wys proxy aan die beoogde HTTP-hanteerder toe voordat daardie hanteerder versoeke begin. Om die objek alleen te skep, verander nie 'n ander kliënt se roeteringbeleid nie.

Verwante artikels