2010-07-09 165 views
11

我正在寻找一个库或函数调用python或相关的库,它会让我提供一个代表HTTP请求/资源的文本数据的原始流,并且会吐出这些信息是一些像字典或列表这种有意义的形式。我不想使用一些内置的类或创建一些新的对象,在我的程序中我收到了一些原始数据,这正是我需要处理的。有没有解决方案,或者我必须自己编写一个HTTP解析器?在Python中解析原始的HTTP

编辑:让我澄清我到底想要做什么。我在寻找的东西会采取一个字符串,如:

GET /index.html HTTP/1.1 \r\n 
Host:www.stackoverflow.com \r\n 
User-Agent:Firefox \r\n 
etc. 

,送我回去的东西封装方法,HTTP版本,标题和所有的休息。

+0

- 这里有两个问题,我认为可能会解决这个问题(我试图详细解决这个问题): http://stackoverflow.com/questions/2115410/does-python-have-a-module - 解析 - http请求和响应/ http://stackoverflow.com/questions/4685217/parse-raw-http-headers/ – 2011-05-12 19:05:10

回答

1

http://docs.python.org/library/httplib.html我相信这是你正在寻找的图书馆。 python 3的名字有点改变,但是不好走。

+2

我看着,但无法完全找到我所需要的。如果我错了,请纠正我,但是这个库不是围绕着实际收/发请求吗?我不想接收任何请求,我只想看看原始数据。你能举一个你认为会这样做的方法吗? – themaestro 2010-07-09 18:55:35

+1

那么http请求,当你收到它包含原始标题数据,并且你使用这个库来创建一个标题字典。这是你的文章描述的内容。如果您想通过套接字接收原始文本数据,您可以尝试http://docs.python.org/library/socket.html,但是您将重新创建大量轮子部分。相反,如果您正在接收原始文本并想要将其解析为有效的请求头文件,您可以尝试http://deron.meranda.us/python/httpheader/pydoc#-parse_token_or_quoted_string,但我没有自己尝试过。 – Gabriel 2010-07-10 06:06:23

1

我首先看WebOb。我认为标准库中的cgi模块也有一个HTTP解析器。

+0

Sweet,webob.Request.accept完美地处理了这个问题:http://pythonpaste.org/webob/reference.html#accept-headers – aehlke 2011-02-25 16:30:04

+0

@Wahnfrieden - 我很困惑,但是,如何获得原始HTTP请求字符串,如问题中所示,并将其转换为WebOb对象。我没有在您的链接中看到任何暗示它有可能的链接。你可以分享如何将HTTP请求字符串转换为WebOb对象吗? (因为我需要在我的一个项目上!):) – 2011-05-11 12:32:11

+0

@Brandon对不起,我提前评论 - WebOb解析我需要的部分头部(只是Accept头部的值),但我不知道其余部分。 – aehlke 2011-05-12 18:50:16