调用Web服务时出现HTTP407代理验证错误我正在开发一个.NET应用程序,它通过互联网调用第三方Web服务。该服务不使用SOAP,因此我们手动构建XML请求文档,通过HTTP将其发送到服务,并检索XML响应。我们的代码是在普通Windows域帐户上下文中运行的Windows服务,位于配置为需要NTLM身份验证的代理服务器(MicrosoftISAServer)后面。运行我们服务的帐户有权通过代理服务器访问互联网。代码如下所示://创建请求对象。HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(url);request.Method="POST";//配置以验证需要Windows域凭据的代理服务器。request.Proxy=NewWebProxy(proxyAddress){UseDefaultCredentials=true};//设置其他必需的标头。request.Accept=acceptableMimeType;request.Headers.Add(HttpRequestHeader.AcceptCharset,acceptableCharset);request.Headers.Add(HttpRequestHeader.AcceptEncoding,"none");request.Headers.Add(HttpRequestHeader.AcceptLanguage,"en-gb");request.Headers.Add(HttpRequestHeader.CacheControl,"no-store");request.Headers.Add(HttpRequestHeader.ContentEncoding,"none");request.Headers.Add(HttpRequestHeader.ContentLanguage,"en-gb");request.ContentType=requestMimeType;request.ContentLength=requestBytes.Length;//进行方法调用。使用(Streamstream=request.GetRequestStream()){stream.Write(requestBytes,0,requestBytes.Length);}HttpWebResponse响应=(HttpWebResponse)request.GetResponse();//在不依赖HTTPContent-Length标头的情况下从响应中提取数据//(我们不能相信所有提供商都正确设置了它)。constintbufferSize=1024*64;列出responseBytes=newList();using(Streamstream=newBufferedStream(response.GetResponseStream(),bufferSize)){int值;while((value=stream.ReadByte())!=-1){responseBytes.Add((byte)值);如果代理服务器关闭,或者如果URL已被列入白名单不需要身份验证,这工作正常,但只要身份验证处于活动状态,它就会失败并出现HTTP407错误我将上面的代码放在测试工具中并尝试了所有我能想到的配置request.Proxy属性的方法,但都没有成功。然后我注意到我们调用的所有第3方Web服务都是HTTPS。当我尝试以HTTP方式访问它们时,代理身份验证开始工作。是否有一些额外的环节我必须跳过才能获得代理身份验证和HTTPS才能很好地发挥作用?PS:开源的SmoothWall代理服务器也出现了同样的问题,所以我不能把它写成ISAServer中的一个bug。PPS:我知道您可以在app.config中配置代理设置,但是(a)在代码中执行此操作不会有任何区别,并且(b)应用程序设计要求我们在运行时从数据库中读取代理设置。您是否尝试过在app.config中设置代理?要禁用代理,请在App.config文件中添加以下配置要启用代理并使用默认代理设置(在IE中指定),请在App.config中添加此配置前?如果您多年未访问互联网(对我来说是20分钟),您就会收到错误消息。您是否尝试过直接设置代理凭据?//设置代理request.Proxy=newWebProxy("proxyIp",8080);request.Proxy.Credentials=CredentialCache.DefaultCredentials;我希望这也能解决你的问题我想我必须写这个问题。我最初发布的代码似乎确实有效。我们的代理服务器非常不可靠;一分钟它会阻止任何软件的互联网连接,然后它会允许它。IT对此无能为力,我们(IT之外的每个人)无权更改网络基础设施。如果有人对如何“强化”我的代码以补偿不可靠的代理服务器有任何想法,我很想听听他们的意见。?代理服务器的证书是否有问题?如果您的服务无法建立HTTPS,则会抛出错误。以上就是C#学习教程:调用Web服务时出现HTTP407代理认证错误。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表作品如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
