c# - HTTPClient 返回 HttpRequestException WinRT

标签 c# json windows-runtime httpclient

出于某种原因,当我尝试从正在使用的 Web API 获取 JSON 结果时,我在 Visual Studio 中收到 403: Forbidden 异常。当我尝试在网络浏览器中使用 Web API URL 时,一切都会按预期显示。有任何想法吗?

主要代码:

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

}

最佳答案

如果您使用默认用户代理,服务器似乎会响应 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();

关于c# - HTTPClient 返回 HttpRequestException WinRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925643/

相关文章:

c# - 如何找到所有图形卡? C#

ios - Swift JSON 解析用户名和密码

javascript - 发送超过 2000 个字符的 JSON 数据

encryption - winrt中加密数据的简单方法

c# - 当应用重新获得焦点时重新启动 MediaCapture

c# - 你能在 Using block 中处理多个对象吗?

c# - 编辑数据表或添加组合框c#

c# - 当光标位于浏览器底部时页脚向上滑动

javascript - 将 JSON 转换为 Javascript 数组

c++ - WinRT XAML - 托管和非托管 - 它是如何工作的?