DownloadString为https网址提供了超时,似乎可以在浏览器中使用

时间:2013-04-01 17:55:00

标签: c# json https webclient

我正在尝试将此网址中的内容添加到我的程序中:https://data.mtgox.com/api/2/BTCUSD/money/ticker。在我的任何浏览器中访问URL时,它都可以正常运行。

然而,在我的程序中,它会等待90秒,并给我一个超时。

这是我的代码:

    private const string ApiLnk = "https://data.mtgox.com/api/2/BTCUSD/money/ticker";

    static void Main(string[] args)
    {
        using (WebClient client = new WebClient())
        {
            string s = client.DownloadString(ApiLnk);
            int i = 0;
        }
    }

字符串s永远不会被分配,因为client.DownloadString()是一个停止。

获取Google.com等常规网址时,效果非常好。

知道什么是错的吗?

3 个答案:

答案 0 :(得分:7)

只需设置HttpRequestHeader.AcceptHttpRequestHeader.UserAgent标头即可。这工作

using (WebClient client = new WebClient())
{
    client.Headers[HttpRequestHeader.Accept] = "text/html, image/png, image/jpeg, image/gif, */*;q=0.1";
    client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12";
    string s = client.DownloadString(ApiLnk);
    int i = 0;
}

答案 1 :(得分:3)

在标题中添加用户代理,您应该没问题。

client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

答案 2 :(得分:2)

使用FiddlerWireshark来比较线路工作时的内容(浏览器)和无法工作的时间(代码)...一旦你知道差异就可以改变相应的代码......