首页 / 知识
关于c#:使用HttpWebResponse读取“分块”响应
2023-04-12 13:40:00

Reading “chunked” response with HttpWebResponse使用StreamReader读取HttpWebResponse的GetResponseStream()返回的流时,我无法读取"分块"响应:
调用 当服务器返回"非分块"响应时,以上代码可以正常工作。 我能够使其正常工作的唯一方法是对初始请求使用HTTP / 1.0(而不是默认的HTTP / 1.1),但这似乎是一个me脚的解决方法。 有任何想法吗? @查克 您的解决方案效果很好。 它仍然在最后一个Read()上抛出相同的IOExeception。 但是在检查了StringBuilder的内容之后,看起来好像已经收到了所有数据。 因此,也许我只需要在尝试捕获中包装Read()并吞下"错误"。 还没有尝试过以"块状"响应的方式进行尝试,但是这样的事情会起作用吗?
我正在研究类似的问题。 .net HttpWebRequest和HttpWebRequest自动处理cookie并进行重定向,但它们不会自动处理响应正文中的分块内容。 这可能是因为分块的内容可能包含的内容不只是简单的数据(即:分块名称,结尾标头)。 仅读取流并忽略EOF异常将不起作用,因为流包含的内容超出了所需的内容。流将包含大块,每个大块首先声明其大小。如果仅从头到尾简单地读取流,则最终数据将包含块元数据(如果是gzip内容,则在解压缩时将无法通过CRC检查)。 为了解决该问题,必须手动解析流,从每个块中删除块大小(以及CR LF分隔符),检测最终块并仅保留块数据。那里可能有个图书馆可以做到这一点,但我还没有找到。 有用的资源:
http://en.wikipedia.org/wiki/Chunked_transfer_encoding 在尝试了StackOverflow和Google的很多代码段之后,最终我发现这是最好的方法(假设您知道数据是UTF8字符串,如果没有,则可以保留字节数组并进行适当处理):
我发现大多数时候其他版本都可以使用,但是偶尔会截断数据。我从以下获得此代码段: https://social.msdn.microsoft.com/Forums/zh-CN/4f28d99d-9794-434b-8b78-7f9245c099c4/problems-with-httpwebrequest-and-transferencoding-chunked?forum=ncl 我遇到了同样的问题(这就是我到这里结束的方式:-)。最终将其追溯到分块流无效的事实-最终的零长度块丢失了。我想出了以下代码,可同时处理有效和无效的分块流。
克雷格(Craig),虽然看不到您正在阅读的流,但调试起来有些困难,但是也许您可以将count变量的设置更改为:
这有点骇人听闻,但是如果最后一次读取使您丧命并且不返回任何数据,那么从理论上讲,这将避免该问题。我仍然想知道为什么流正在这样做。 |
最新内容
相关内容
python怎样逐行读取
python怎样逐行读取,培训,数据,文件,程序,内容,字符集,方法,结尾,字符,接下来,python文件对象提供了如下两个方法来读取行:readline([n]):读取python如何读取文件
python如何读取文件,培训,数据,文件,信息,有限,操作系统,对象,磁盘,函数,表示,读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操python怎样定义函数返回值
python怎样定义函数返回值,培训,代码,函数,定义,形式,以上,感觉,结果,更多,内容,python函数返回值,两种形式:1返回一个值。2返回多个值。现看看python函数返回值是不是整形
python函数返回值是不是整形,培训,观察,函数,参数,逗号,类型,表达式,示例,语句,错误,python函数的返回值我们知道,函数可以通过return[表达式]python如何读取数据
python如何读取数据,数据,分析,培训,基础,情况,工具,格式,文件,函数,下面,不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为python函数返回值是什么
python函数返回值是什么,培训,代码,位置,简介,函数,语句,上面,结束,结果,变量,return语句位置与多条return语句1、python函数使用return语句python函数如何不返回none
python函数如何不返回none,培训,函数,语句,变量,赋值,参数,实际,结果,字符串,语法,python中,用def语句创建函数时,可以用return语句指定应该返python怎么打开读取csv
python怎么打开读取csv,数据,培训,数字,标准,文件,对象,制表符,格式,模块,逗号,CSV(Comma-SeparatedValues)格式是电子表格和数据库最常用的python函数的返回值是什么
python函数的返回值是什么,培训,简介,函数,语句,结果,类型,结束,定义,以上,作用,python的返回值简介函数需要先定义后调用,函数体中return语句pythonPandas读取数据文件的优点
pythonPandas读取数据文件的优点,数据,灵活,培训,分析,情况,代码,优点,表示,文件,行为,pythonPandas读取数据文件的优点优点1、Pandas提供了pythonsplitlines在python中返回列
pythonsplitlines在python中返回列表,培训,列表,方法,空格,实例,以上,参数,时候,操作,教程,splitlines在python中返回列表说明1、splitlines(python按行读取文件的方法比较
python按行读取文件的方法比较,培训,文件,方法,内容,内存,末尾,指针,实例,以上,教程,python按行读取文件的方法比较1、read方法默认会把文件