小编Dan*_*mer的帖子

流式HTTP与GZIP由StreamReader缓冲?

苦苦寻找遇到类似问题或任何类似问题的人.

我目前正在使用具有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上使用缓冲区大小没有运气. …

c# gzip http httpwebrequest http-streaming

4
推荐指数
1
解决办法
1941
查看次数

标签 统计

c# ×1

gzip ×1

http ×1

http-streaming ×1

httpwebrequest ×1