ਪ੍ਰੌਕਸੀ URL ਦਾ UserInfo WebProxy.Credentials ਨਹੀਂ ਹੈ
NetworkCredential ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ HTTP ਪ੍ਰੌਕਸੀ URI ਤੋਂ ਵਰਤੋਂਕਾਰ ਜਾਣਕਾਰੀ ਕੱਢੋ ਅਤੇ ਡੀਕੋਡ ਕਰੋ।
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 ਐਸਕੇਪਿੰਗ ਕਰੋ।
ਅੰਤ ਵਿੱਚ, ਹੈਂਡਲਰ ਦੇ ਬੇਨਤੀਆਂ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ proxy ਨੂੰ ਲੋੜੀਂਦੇ HTTP ਹੈਂਡਲਰ ਨੂੰ ਸੌਂਪੋ। ਸਿਰਫ਼ ਆਬਜੈਕਟ ਬਣਾਉਣ ਨਾਲ ਕਿਸੇ ਹੋਰ ਕਲਾਇੰਟ ਦੀ ਰਾਊਟਿੰਗ ਨੀਤੀ ਨਹੀਂ ਬਦਲਦੀ।