Dotnet webclient超时,但浏览器工作文件为json webservice

本文关键字:工作文件 json webservice 浏览器 webclient 超时 Dotnet | 更新日期: 2023-09-27 18:01:28

我正在尝试使用以下代码将以下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();
       }
   }

也导致同样的错误。谁能指出我做错了什么吗?

Dotnet webclient超时,但浏览器工作文件为json webservice

嗯,奇怪,这对我来说很有用:

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头,因为站点似乎期望它。

我以前也遇到过类似的问题。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();
           }
       }