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

client.DownloadString() がストールしているため、文字列 s が割り当てられることはありません。

Google.com のような通常の URL を取得すると、完全に機能します。

何が問題なのですか?

4

3 に答える 3

7

ヘッダーHttpRequestHeader.Acceptを設定するだけです。HttpRequestHeader.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

FiddlerまたはWiresharkを使用して、動作するとき (ブラウザ) と動作しないとき (コード) を比較します...違いがわかったら、それに応じてコードを変更できます...

于 2013-04-01T17:58:16.423 に答える