C# - 来自应用程序的响应与来自浏览器的响应不同

时间:2015-09-06 18:37:59

标签: c# json xml httpclient

我正在尝试使用以下请求网址获取Bing壁纸数据:http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1 我有以下代码:

    private string getJsonData()
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Clear();
            client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "application/json");
            client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/43.3.3.185 Chrome/43.0.2357.81 Safari/537.36");

            using (var response = client.GetAsync("http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1").Result)
            {
                response.EnsureSuccessStatusCode();

                return response.Content.ReadAsStringAsync().Result;
            }
        }
    }

问题是我收到的版权链接等于javascript:void(0),如您所见,如果我使用浏览器发出相同的请求,我会收到一个有效的网址:http://www.bing.com/search?q=Brooklyn+Heights,+New+York&form=hpcapt&filters=HpDate:%2220150906_0700%22

我已经尝试了很多关于随请求发送的标头的事情,没有成功,所以我认为问题来自其他地方。有什么建议吗?

注意:使用xml作为请求的格式时会出现同样的问题

谢谢!

2 个答案:

答案 0 :(得分:0)

由于javascript:void(0)意味着未定义,我想对于特定情况根本没有版权林 k(指向作者网页,或类似的东西)。只有“©Andrew C. Mace / Getty Images”

答案 1 :(得分:0)

最后,我发现了这个问题:看起来我必须在请求网址中添加区域,例如:http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US。在这种情况下,copyrightlink不是javascript:void(0)。