http响应的剖析
示例(加载此页面)
HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Fri, 27 Sep 2013 19:22:41 GMT
Last-Modified: Fri, 27 Sep 2013 19:21:41 GMT
Vary: *
X-Frame-Options: SAMEORIGIN
Date: Fri, 27 Sep 2013 19:21:41 GMT
Content-Length: 12706
... truncated rest of body ...
>第一行是状态行,由状态代码和状态文本组成.
>标头是键/值对.标头以空的新行结束.空行表示没有更多的标头,并且紧随其后的是有效负载/主体.
>正文将消耗其余的消息.
下面说明如何提取这三个部分:
状态线
使用以下命令获取从服务器发送回的状态行
>>> bad_r = requests.get('http://httpbin.org/status/404')
>>> bad_r.status_code
404
>>> bad_r.raise_for_status()
Traceback (most recent call last):
File "requests/models.py", line 832, in raise_for_status
raise http_error
requests.exceptions.HTTPError: 404 Client Error
标头:
r = requests.get('http://en.wikipedia.org/wiki/Monty_Python')
# response headers:
r.headers
# request headers:
r.request.headers
身体
使用r.text.
发布请求编码
您在请求中发送给服务器的“内容类型”应与您实际发送的内容类型匹配.在您的情况下,您正在发送json,但告诉服务器您正在发送表单数据(如果未指定,则为默认值).
从上面显示的标题中:
“ Content-Type”:“应用程序/ x-www-form-urlencoded”,
但是您的request.post调用设置了data = json.dumps(data),它是JSON.标头应显示:
“ Content-type”:“ application / json”,