調用WebClient的DownLoadString方法調用介面,當數據量比較小的時候(十幾條數據)一切正常。後來對方突然放了一千多條數據,然後就報錯了:連接被意外關閉。 先是以為是對方介面沒有在輸出完畢就關閉了連接對象,經過排查否定此種可能。通過HttpWebRequest調用,然後迴圈讀取位元組流 ...
調用WebClient的DownLoadString方法調用介面,當數據量比較小的時候(十幾條數據)一切正常。後來對方突然放了一千多條數據,然後就報錯了:連接被意外關閉。
先是以為是對方介面沒有在輸出完畢就關閉了連接對象,經過排查否定此種可能。通過HttpWebRequest調用,然後迴圈讀取位元組流,不報錯,但是讀取不完整。
最後修改為這種方式才解決:
public string GetManyData(string url)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.ContentType = "application/json";
request.Accept = "application/json,text/javascript,*/*,q=0.01";
request.Headers.Add("Accept-Encoding", "deflate,gzip");
request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip | DecompressionMethods.None;
using (Stream stream =request.GetResponse().GetResponseStream())
{
StreamReader sr = new StreamReader(stream);
return sr.ReadToEnd();
}
}
還沒有仔細研究內中原因。