|
|
1
3
还没有尝试过这种“分块”响应,但这样的方法有效吗?
|
|
|
2
1
我正在研究一个类似的问题。.net HttpWebRequest和HttpWebRequent会自动处理Cookie和重定向,但它们不会自动处理响应体上的分块内容。 这可能是因为分块内容可能包含的不仅仅是简单的数据(即:分块名称、尾随标头)。 简单地读取流并忽略EOF异常是行不通的,因为流包含的内容超过了所需的内容。流将包含块,每个块都以声明其大小开始。如果只是从头到尾读取流,则最终数据将包含块元数据(如果是gzip压缩的内容,则解压缩时CRC校验将失败)。 为了解决这个问题,有必要手动解析流,从每个块中删除块大小(以及CR LF分隔符),检测最终块并仅保留块数据。可能有一个图书馆在那里做这件事,我还没有找到。 有用资源: http://en.wikipedia.org/wiki/Chunked_transfer_encoding https://www.rfc-editor.org/rfc/rfc2616#section-3.6.1 |
|
|
3
-1
在尝试了StackOverflow和谷歌的大量代码片段后,我最终发现这是最有效的(假设你知道数据是UTF8字符串,如果不是,你可以保留字节数组并适当处理):
我发现其他变体在大多数情况下都有效,但偶尔会截断数据。我从以下来源得到这个片段: |
|
|
4
-1
这很有趣。在处理请求头并删除“Accept-Encoding:gzip,deflate”的过程中,我用例中的服务器确实以简单的ascii方式进行了响应,不再使用分块的编码片段。也许你应该试试,把“Accept-Encoding:gzip,deflate”去掉。这个想法是在阅读上面提到的关于使用压缩的wiki主题时产生的。 |