【发布时间】:2016-01-24 14:58:01
【问题描述】:
我有一个webclient 调用URL,当我在浏览器中查看它时工作正常,这让我相信我需要在我的调用中添加标题
我已经这样做了,但仍然收到错误。
我确实有其他对相同 API 的调用可以正常工作,并检查了我传递的所有参数是否与预期完全相同(大小写、拼写)
using (var wb = new WebClient())
{
wb.Proxy = proxy;
wb.Headers.Add("Accept-Language", " en-US");
wb.Headers.Add("Accept", " text/html, application/xhtml+xml, */*");
wb.Headers.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)");
byte[] response = wb.UploadValues("http://myserver/api/account/GetUser",
new NameValueCollection()
{
{ "email", register.Email },
});
userDetails = Encoding.UTF8.GetString(response);
}
有谁知道为什么在浏览器中运行良好的调用仍然出现协议错误?
【问题讨论】:
-
请公布确切的错误。
-
我得到的只是一个 404 未找到,当我打开详细信息时,它说的是 ProtocolError
-
使用像wireshark或fiddler这样的嗅探器来比较webclient和你的代码。错误 404 可能意味着很多不同的事情。为了防止黑客进入网站,通常在发生故障时总是返回 404,并且没有给出故障的确切原因。
-
只是为了确保将
" en-US"替换为"en-US"。GetUser函数是否需要 GET 或 POST http 操作? -
代理是否正确?
标签: c# webclient http-error