Тайм-аут Dotnet веб-клиента, но файл браузера работает для веб-службы JSON - PullRequest
2 голосов
/ 07 июля 2011

Я пытаюсь получить результат следующего json webservice https://mtgox.com/code/data/getDepth.php в строку, используя следующий код.

using (WebClient client = new WebClient())
{
     string data = client.DownloadString("https://mtgox.com/code/data/getDepth.php");
}

но всегда возвращает исключение тайм-аута и никаких данных. Я планирую использовать fastjson, чтобы превратить ответ в объекты, и ожидал, что это будет сложная часть, а не возврат содержимого страницы.

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://mtgox.com/code/data/getDepth.php");
  using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
  {
       using (StreamReader sr = new StreamReader(response.GetResponseStream()))
       {
           string data = sr.ReadToEnd();
       }
   }

Также вылилось в ту же ошибку. Кто-нибудь может указать, что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

Хм, Strage, это прекрасно работает для меня:

class Program
{
    static void Main()
    {
        using (var client = new WebClient())
        {
            client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0";
            var result = client.DownloadString("https://mtgox.com/code/data/getDepth.php");
            Console.WriteLine(result);
        }
    }
}

Обратите внимание, что я указываю HTTP-заголовок User Agent, поскольку кажется, что сайт его ожидает.

0 голосов
/ 07 июля 2011

У меня была похожая проблема раньше.request.KeepAlive = false решил мою проблему.Попробуйте это:

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://mtgox.com/code/data/getDepth.php");
  request.KeepAlive = false;
      using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
      {

           using (StreamReader sr = new StreamReader(response.GetResponseStream()))
           {
               string data = sr.ReadToEnd();
           }
       }
...