苦苦寻找遇到类似问题或任何类似问题的人.
我目前正在使用具有GZip要求的http(json)流,我遇到了从发送数据到reader.ReadLine()
读取数据时的延迟.有人向我建议,这可能与解码保留缓冲区中的数据有关?
这就是我目前的情况,它除了延迟之外还可以正常工作.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint);
request.Method = "GET";
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential(username, password);
request.AutomaticDecompression = DecompressionMethods.GZip;
request.ContentType = "application/json";
request.Accept = "application/json";
request.Timeout = 30;
request.BeginGetResponse(AsyncCallback, request);
Run Code Online (Sandbox Code Playgroud)
然后在AsyncCallback方法中我有:
HttpWebRequest request = result.AsyncState as HttpWebRequest;
using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result))
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if (string.IsNullOrWhiteSpace(line)) continue;
Console.WriteLine(line);
}
}
Run Code Online (Sandbox Code Playgroud)
它只是坐下来reader.Readline()
直到收到更多的数据,然后甚至阻止其中一些.还有收到的保持活动的新行,当它决定阅读某些内容时,通常会立即读出这些新行.
我已经测试了运行curl命令并行运行的流,curl命令完全接收和解压缩数据.
任何见解都会很棒.谢谢,
担
编辑 在streamreader上使用缓冲区大小没有运气. …