有效 url c# 上的 Webclient 404 协议错误
Webclient 404 protocol error on valid url c#
我有一个 webclient
调用 URL
,当我在浏览器中查看它时它工作正常,这让我相信我需要将 headers 添加到我的电话
我已经这样做了,但仍然出现错误。
我确实对同一个 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);
}
有谁知道为什么我在浏览器中运行良好的调用中仍然收到协议错误?
UploadValue 使用 HTTP POST。你确定这是你想要的吗?如果您在浏览器中查看它,它很可能是 GET,除非您正在填写某种网络表单。
有人可能会猜测您正在尝试做的是获取此响应“http://myserver/api/account/GetUser?email=blah@blah.com”
在这种情况下,您只需使用查询参数制定 url,然后使用 DownloadString 重载之一执行 GET。
using (var wb = new WebClient())
{
wb.Proxy = proxy;
userDetails = wb.DownloadString("http://myserver/api/account/GetUser?email=" + register.Email);
}
The Wikipedia article on REST 有一个很好的 table 概述了每个 HTTP 动词的语义,这可能有助于选择合适的 WebClient
方法用于您的用例。
我有一个 webclient
调用 URL
,当我在浏览器中查看它时它工作正常,这让我相信我需要将 headers 添加到我的电话
我已经这样做了,但仍然出现错误。
我确实对同一个 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);
}
有谁知道为什么我在浏览器中运行良好的调用中仍然收到协议错误?
UploadValue 使用 HTTP POST。你确定这是你想要的吗?如果您在浏览器中查看它,它很可能是 GET,除非您正在填写某种网络表单。
有人可能会猜测您正在尝试做的是获取此响应“http://myserver/api/account/GetUser?email=blah@blah.com”
在这种情况下,您只需使用查询参数制定 url,然后使用 DownloadString 重载之一执行 GET。
using (var wb = new WebClient())
{
wb.Proxy = proxy;
userDetails = wb.DownloadString("http://myserver/api/account/GetUser?email=" + register.Email);
}
The Wikipedia article on REST 有一个很好的 table 概述了每个 HTTP 动词的语义,这可能有助于选择合适的 WebClient
方法用于您的用例。