Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 长时间运行但长度有限的HttpWebRequest调用仅获取部分数据_C#_Http_Httpwebrequest_Webrequest_Httpwebresponse - Fatal编程技术网

C# 长时间运行但长度有限的HttpWebRequest调用仅获取部分数据

C# 长时间运行但长度有限的HttpWebRequest调用仅获取部分数据,c#,http,httpwebrequest,webrequest,httpwebresponse,C#,Http,Httpwebrequest,Webrequest,Httpwebresponse,我正在尝试使用第三方服务api。他们的一种方法是引入所有记录,这需要花费大量时间,大约9分钟(我使用chrome应用程序“高级Rest客户端”尝试了这一方法) 我已尝试设置webRequest.Timeout=3600000;//超时。无限 但它总是在2分钟后返回,结果包含135条记录(而chrome应用程序返回1050条记录,这是正确的) 我在两种情况下使用相同的参数(我将其作为POST数据发送);那么,为什么结果会有差异呢? 我正在一个类库中使用这段代码,该类库将在WPF应用程序中使用 是否

我正在尝试使用第三方服务api。他们的一种方法是引入所有记录,这需要花费大量时间,大约9分钟(我使用chrome应用程序“高级Rest客户端”尝试了这一方法)

我已尝试设置
webRequest.Timeout=3600000;//超时。无限
但它总是在2分钟后返回,结果包含135条记录(而chrome应用程序返回1050条记录,这是正确的)

我在两种情况下使用相同的参数(我将其作为POST数据发送);那么,为什么结果会有差异呢? 我正在一个类库中使用这段代码,该类库将在WPF应用程序中使用

  • 是否存在超时的最大值
  • 超时。无限正在将其设置为“-1”,对吗
  • 获取所有数据的其他变通方法是什么
  • 非常感谢您的任何帮助/建议

    更新:添加代码

     HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
           AllDevicesList devInfo = null;
           try
           {
               string postData = "";
    
               foreach (string key in postParameters.Keys)
               {
    
                   postData += HttpUtility.UrlEncode(key) + "="
                         + HttpUtility.UrlEncode(postParameters[key]) + "&";
               }
               postData = postData.TrimEnd('&');
               if (cookie == null)
                   webRequest.CookieContainer = new CookieContainer();
               else
                   webRequest.CookieContainer = cookie;
    
    
               webRequest.Timeout = 3600000;// Timeout.Infinite; // 1000000;
    
               webRequest.KeepAlive = true;
               webRequest.Method = "POST";
    
               byte[] data = Encoding.ASCII.GetBytes(postData);
    
               webRequest.ContentType = "application/x-www-form-urlencoded";
    
               webRequest.ContentLength = data.Length;
    
               Stream requestStream = webRequest.GetRequestStream();
               requestStream.Write(data, 0, data.Length);
    
               WebResponse WebResp = webRequest.GetResponse();
    
               DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(AllDevicesList));
    
    
               object objResponse = jsonSerializer.ReadObject(WebResp.GetResponseStream());
               devInfo = objResponse as AllDevicesList;
    
    
               requestStream.Close();
    
    
               WebResp.Close();
    

    我已经将实现更改为异步,现在我获得了所有记录。
    感谢您的回复。

    Chrome应用程序需要多长时间才能产生1050个结果?Chrome应用程序需要“加载时间:241639毫秒”,但它会发生变化,我看到的最大时间大约是8-9分钟。为什么您在接收数据时使用post。get有什么问题?还可以对数据进行分页,这样您就不需要一次完成所有数据。