Http协议,Content-Length,获取页面内容Python

时间:2011-09-15 20:36:59

标签: python http-headers

我正在尝试编写自己的Python 3 http库以了解有关套接字和Http协议的更多信息。我的问题是,如果使用我的套接字执行recv(bytesToRead),如何只获取标题然后使用Content-Length信息,继续收到页面内容?这不是Content-Length标题的目的吗? 提前致谢

1 个答案:

答案 0 :(得分:2)

过去要完成这个,我会将一部分套接字数据读入内存,然后从该缓冲区中读取,直到遇到“\ r \ n \ r \ n”序列(你可以使用状态机)要做到这一点,或者只是使用string.find()函数。一旦你到达那个序列,就会知道所有的头文件已被读取,你可以对头部进行一些解析,然后读取整个内容长度。你可能需要准备读取不包含内容长度标题的响应,因为并非所有响应都包含它。

如果在看到该序列之前用完了缓冲区,只需将更多数据从套接字读入缓冲区并继续处理。

如果您想查看它,我可以发布一个C#示例。