C# 长时间运行但长度有限的HttpWebRequest调用仅获取部分数据
我正在尝试使用第三方服务api。他们的一种方法是引入所有记录,这需要花费大量时间,大约9分钟(我使用chrome应用程序“高级Rest客户端”尝试了这一方法) 我已尝试设置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应用程序中使用 是否
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有什么问题?还可以对数据进行分页,这样您就不需要一次完成所有数据。