我正在编写一个实验性的异步Web服务器。我想知道在python中解码HTTP请求的标准/“最佳”方法?
基本上从套接字读取的内容是输入请求原始数据的字节表示;如何将这些转换为标准数据类型,如字典,值列表等?是否有一个很好的通用教程如何做到这一点以及要注意什么(特别是关于编码和浏览器细节)?
答案 0 :(得分:1)
这对我有用:
import StringIO, httplib
ucode_data = unicode( your_raw_data ,"utf-8")
str = StringIO.StringIO( ucode_data )
http_header = httplib.HTTPMessage(str,0)
http_header.readheaders()
print http_header.__dict__
但它没有解码请求(例如,GET /index.html HTTP / 1.2) - 它会为你解码其余的
答案 1 :(得分:0)
见
20.10.4。 HTTPMessage对象
http.client.HTTPMessage实例保存HTTP响应的标头。它是使用email.message.Message类实现的。
http://docs.python.org/py3k/library/http.client.html#httpmessage-objects
您应该能够将HTTPMessage
用作独立类,而无需调用urllib(或任何Python 3等效项)。
答案 2 :(得分:0)
不要处理插座;抽象!试试httplib2。它是Python 2和3的完整HTTP库,它非常直观,但您必须下载并安装它。请阅读usage example以获取快速介绍。
Dive Into Python 3包含非常好的chapter on installing and using httplib2,以及为什么它比其他替代品更好,包括标准库;我建议你阅读。