WebProxy యొక్క URI కన్స్ట్రక్టర్ ఒక ఎండ్‌పాయింట్‌ను మాత్రమే ఎంచుకుంటుంది; ఆ URI యొక్క వినియోగదారు సమాచారంతో Credentials నింపదు. అప్లికేషన్ ధృవీకరించిన HTTP ప్రాక్సీ 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 అనేది ఇచ్చిన ప్రాక్సీ URL, వెబ్‌సైట్ URL కాదు. Uri దాని authorityను విశ్లేషిస్తుంది, UriBuilder WebProxyలో నిల్వ చేయబడిన ఎండ్‌పాయింట్ నుండి వినియోగదారు సమాచారాన్ని తొలగిస్తుంది.

భాగాలను డీకోడ్ చేయడానికి ముందు మొదటి అక్షరార్థ కోలన్ వద్ద విభజించండి. ఇది వినియోగదారు పేరులోని ఎన్‌కోడ్ చేసిన కోలన్‌ను కాపాడుతుంది మరియు పాస్‌వర్డ్‌లోని అదనపు కోలన్‌లను పాస్‌వర్డ్‌లోనే ఉంచుతుంది. ప్రతి భాగాన్ని ఒకసారి మాత్రమే డీకోడ్ చేయండి; పాస్‌వర్డ్‌ను Base64లో ఎన్‌కోడ్ చేయవద్దు, బదులుగా URL escaping చేయండి.

చివరగా, హ్యాండ్లర్ అభ్యర్థనలు ప్రారంభించే ముందు proxyను ఉద్దేశించిన HTTP హ్యాండ్లర్‌కు కేటాయించండి. కేవలం ఆబ్జెక్ట్‌ను నిర్మించడం మరొక క్లయింట్ యొక్క రౌటింగ్ విధానాన్ని మార్చదు.

సంబంధిత వ్యాసాలు