[英]Long running, but finite length HttpWebRequest Callout gets only partial data
我正在尝试使用第三方服务api。 他们采用的方法之一是引入所有记录,这需要很长时间,大约需要9分钟(我使用chrome应用程序“ Advanced Rest Client”进行了尝试)。
我试过设置webRequest.Timeout = 3600000;// Timeout.Infinite;
但是它总是在大约2分钟后返回,并且结果包含135条记录(而chrome应用返回1050条记录,这是正确的#)
我在两种情况下都使用相同的参数(我将其作为POST数据发送); 那为什么结果有差异呢? 我在类库中使用此代码,该类库将在WPF应用程序中使用。
任何帮助/建议,我们将不胜感激。
更新:添加代码
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();
我已将实现更改为异步,现在我已获取所有记录。 感谢您的所有回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.