抓取网页、以及传输网络文件产生 “1ff8” 串的原因
通常我们抓取网页内容,或是下载网络文件使用http协议,当不能预先确定报文体的长度时,不可能在头中包含Content-Length域来指明报文体长度,此时就需要通过Transfer-Encoding域来确定报文体长度。
Transfer-Encoding域的值应当为chunked,表明采用chunked编码方式来进行报文体的传输。chunked编码是HTTP/1.1 RFC里定义的一种编码方式,因此所有的HTTP/1.1应用都应当支持此方式。
在其他的语言的库里面这个的实现完整性应该是不错的。但是在c 或是 c++ 里面有些库就会有问题。我在使用curl 和 codeproject 上面的 generic Http
库的时候就遇到了,当网页文件过大的时候,得到的response 里面会含有很多的 1ff8 开头的空行。 一搜 ,下面这个链接的仁兄也是这个问题:
http://topic.csdn.net/u/20080910/14/19995069-3d08-4e1a-ad2c-93be991b861a.html
这个1ff8 接空行的模式会有规律出现。无论是xml 还是html 的文件中如果多了这些信息,就会解析出错。仔细检查原来自己的curl中的流写入函数有问题。
改写后就好了。这个问题缠了我好久,特意记下来,如果谁要是再次遇到这个模式,可以向这边想想。
posted on 2008-12-27 22:50 康国庆--thinkinlove 阅读(1119) 评论(0) 编辑 收藏 举报