您正在将代理凭据设置在错误的位置.
httpClientHandler.Credentials是代理已经建立连接后给予服务器的凭据.如果你错了,你可能会得到401或403的答复.
您需要设置给代理的凭据,否则首先将拒绝将其连接到服务器.您提供给代理的凭据可能与您提供给服务器的凭据不同.如果你错了,你会得到一个407的回应.你得到一个407,因为你根本不设置这些.
// First create a proxy object
string proxyUri =
string.Format("{0}:{1}", proxyServerSettings.Address, proxyServerSettings.Port);
NetworkCredential proxyCreds = new NetworkCredential(
proxyServerSettings.UserName,
proxyServerSettings.Password
);
WebProxy proxy = new WebProxy(proxyUri, false)
{
UseDefaultCredentials = false,
Credentials = proxyCreds,
};
// Now create a client handler which uses that proxy
HttpClient client = null;
HttpClientHandler httpClientHandler = new HttpClientHandler()
{
Proxy = proxy,
PreAuthenticate = true,
UseDefaultCredentials = false,
};
// You only need this part if the server wants a username and password:
string
httpUserName = "?????",
httpPassword = "secret";
httpClientHandler.Credentials = new NetworkCredential(httpUserName, httpPassword);
client = new HttpClient(httpClientHandler);