HTTP协议,内容长度,获取页面内容Python
我正在尝试自己编写一个Python 3的http库,目的是为了更深入地了解套接字和Http协议。我的问题是,如果我使用我的套接字进行recv(bytesToRead)操作,我该如何只获取头部信息,然后根据Content-Length的信息继续接收页面的内容呢?Content-Length头部的目的不就是这个吗?谢谢大家的帮助!
1 个回答
2
过去要完成这个任务,我会先把一部分套接字的数据读到内存里,然后从这个缓冲区里继续读取,直到遇到一个"\r\n\r\n"的序列(你可以用状态机来处理这个,或者直接使用string.find()函数)。一旦到达这个序列,就说明所有的头信息都已经读取完毕,这时你可以解析这些头信息,然后再读取整个内容的长度。需要注意的是,有些响应可能没有内容长度的头信息,所以你要做好准备。
如果在看到这个序列之前缓冲区的数据用完了,就继续从套接字里读取更多的数据到你的缓冲区,然后继续处理。
如果你想看一个C#的例子,我可以发给你。