【发布时间】:2013-05-07 11:34:30
【问题描述】:
我正在尝试连接一个基于 REST 的 Web 服务,虽然它在我的本地开发机器上运行良好,但我很难让它在我的客户端测试系统上运行,该系统位于 Web 代理后面。
我这里有这个代码sn-p:
HttpWebRequest request = WebRequest.Create(targetUrl) as HttpWebRequest;
if (request == null)
return;
request.Method = "GET";
request.Accept = "application/json";
request.Credentials = new NetworkCredential("myusername", "mytopsecretpassword");
WebProxy webProxy = new WebProxy("myproxy.net", 8080)
{
Credentials = new NetworkCredential("myusername", "mytopsecretpassword"),
UseDefaultCredentials = false
};
request.Proxy = webProxy;
但是当我尝试执行这个调用并得到这样的响应时:
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
我不断收到错误:
System.Net.WebException
远程服务器返回错误:(407) 需要代理身份验证。
WTF ?!?!我正在设置代理并提供代理凭据....我还能做什么?
【问题讨论】:
-
先检查明显:您确定用户名和密码正确吗?
-
@dtb:是的——当我在 MS IE 中登录管理 GUI 时,它们工作得很好。另外:在我的本地开发机器上,没有代理,这些凭据可以正常工作。
-
代理是否有可以查看的错误日志? (你的代码没有明显错误,所以远程调试你的程序相当困难。)
-
@dtb:我不知道——这个远程系统(从代理开始)超出了我的能力范围。如果有是代理日志,我不会知道它,我也无权访问它....
-
您是否尝试过使用 Fiddler/Wireshark 查看这两个 HTTP 请求并检查 MSIE 和 HttpWebRequest 之间是否存在差异?
标签: c# .net-4.0 httpwebrequest http-proxy