4

我正在尝试将此 URL 中的内容获取到我的程序中: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 这样的普通 URL 时,它可以完美运行。

知道有什么问题吗?

4

3 回答 3

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;
}
于 2013-04-01T17:59:43.850 回答
4

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

client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
于 2013-04-01T17:59:49.063 回答
2

使用FiddlerWireshark来比较线路工作时(浏览器)和不工作时(您的代码)传输的内容...一旦您知道差异,您就可以相应地更改您的代码...

于 2013-04-01T17:58:16.423 回答