C# HTTPClient返回HttpRequestException WinRT
出于某种原因,当我尝试从正在使用的web API获取JSON结果时,我在Visual Studio中收到一个403:Forbidded异常。当我尝试在我的web浏览器中使用web API URL时,所有内容都显示为它应该显示的内容。有什么想法吗 主要代码:C# HTTPClient返回HttpRequestException WinRT,c#,json,windows-runtime,httpclient,C#,Json,Windows Runtime,Httpclient,出于某种原因,当我尝试从正在使用的web API获取JSON结果时,我在Visual Studio中收到一个403:Forbidded异常。当我尝试在我的web浏览器中使用web API URL时,所有内容都显示为它应该显示的内容。有什么想法吗 主要代码: 如果您使用的是默认的用户代理,服务器似乎会对您做出403响应。如果您将其更改为chrome用户代理,服务器将正确应答 var url = new Uri("http://isitup.org/duckduckgo.com.json"); va
如果您使用的是默认的用户代理,服务器似乎会对您做出403响应。如果您将其更改为chrome用户代理,服务器将正确应答
var url = new Uri("http://isitup.org/duckduckgo.com.json");
var req = new HttpClient();
var message = new HttpRequestMessage(HttpMethod.Get, url);
message.Headers.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17");
var response = await req.SendAsync(message);
var responseString = await response.Content.ReadAsStringAsync();
很可能你的浏览器正在发送某种身份验证…@JonSkeet是的,考虑过了,但我不知道会在哪里。我们可以使用Wireshark或类似的工具来查看你的浏览器正在发送什么。尝试使用Firefox的Live HTTP头来检查身份验证密钥或类似的工具,但找不到任何东西。Wireshark能给我看些更具体的吗?我认为WinCap不能安装在Windows 8.1上。检查饼干。您的浏览器可能会发送它们,而您的应用程序不会。2.尝试更改用户代理,可能默认的一个被serverWorks禁止,就像它应该做的一样!谢谢,Teemu。在尝试使用bing地图定位api时遇到了这个问题。谢谢
class StatusMessage
{
public class RootObject
{
public string domain { get; set; }
public int port { get; set; }
public int status_code { get; set; }
public object response_ip { get; set; }
public object response_code { get; set; }
public object response_time { get; set; }
}
}
var url = new Uri("http://isitup.org/duckduckgo.com.json");
var req = new HttpClient();
var message = new HttpRequestMessage(HttpMethod.Get, url);
message.Headers.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17");
var response = await req.SendAsync(message);
var responseString = await response.Content.ReadAsStringAsync();