2013-02-17 72 views
2

出于某种原因,我在尝试从我正在使用的Web API获取JSON结果时,在Visual Studio中收到403:Forbidden异常。当我在我的网络浏览器中尝试使用网络API网址时,所有内容都应该显示。有任何想法吗?HTTPClient返回HttpRequestException WinRT

的主要代码:

 theURI = "http://isitup.org/duckduckgo.com.json"; 
     HttpClient httpClient = new HttpClient(); 
     httpClient.MaxResponseContentBufferSize = Int32.MaxValue; 
     var jsonResponse = await httpClient.GetStringAsync(theURI); 

     var rootObject = JsonConvert.DeserializeObject<StatusMessage.RootObject>(jsonResponse); 
     int statuscode = rootObject.status_code; 

     if (statuscode == 1) 
     { 
      txtStatus.Text = "Website is UP!"; 
     } 
     else if (statuscode == 2) 
     { 
      txtStatus.Text = "Website is DOWN!"; 
     } 
     else 
     { 
      txtStatus.Text = "Invalid domain!"; 
     } 

和类文件

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; } 
    } 

} 
+0

那么想必你的浏览器发送某种身份验证... – 2013-02-17 20:23:28

+0

@JonSkeet是的,想过,但我想不通的地方,这将是。 – AndreasB 2013-02-17 20:26:13

+0

那么使用Wireshark或类似的东西来查看你的浏览器正在发送什么。 – 2013-02-17 20:50:52

回答

2

好像服务器,如果您使用的是默认的用户代理响应你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(); 
+0

工作就像它应该!谢谢Teemu – AndreasB 2013-02-18 08:30:57

+0

尝试使用bing地图位置api时会遇到此问题。谢谢! – 2016-04-27 14:22:24

相关问题