使用Python请求模块获取HTTP响应标头

哈珀维尔

我在Python中使用“请求”模块来查询RESTful API端点。有时,端点返回HTTP错误500。我意识到我可以使用request.status_code获取状态代码,但是当我收到错误500时,我希望看到HTTP“响应文本”(我不确定它的名称是什么) ,以下示例)。到目前为止,我已经能够使用response.headers获得一些标题。但是,我要查找的信息仍然不存在。

使用“ curl -vvv”,我可以看到我想要的HTTP响应(为清晰起见,省略了一些输出):

< HTTP/1.1 200 OK <---------------------this is what I'm after)
* Server nginx/1.4.1 is not blacklisted
< Server: nginx/1.4.1
< Date: Wed, 05 Feb 2014 16:13:25 GMT
< Content-Type: application/octet-stream
< Connection: close
< Set-Cookie: webapp.session.id="mYzk5NTc0MDZkYjcxZjU4NmM=|1391616805|f83c47a363194c1ae18e"; expires=Fri, 07 Mar 2014 16:13:25 GMT; Path=/
< Content-Disposition: attachment; filename = "download_2014161325.pdf"
< Cache-Control: public

同样,这是由于卷曲。现在,当我使用Python的request模块并请求标头时,这就是我得到的:

CaseInsensitiveDict(
 {
  'date': 'Tue, 04 Feb 2014 21:56:45 GMT',
  'set-cookie': 'webapp.session.id="xODgzNThlODkzZ2U0ZTg=|1391551005|a11ca2ad11195351f636fef"; expires=Thu, 06 Mar 2014 21:56:45 GMT; Path=/, 
  'connection': 'close',
  'content-type': 'application/json',
  'server': 'nginx/1.4.1'
 }
)

请注意,curl响应包括“ HTTP / 1.1 200 OK”,但request.headers不包含。响应标头中几乎所有其他内容都在那里。requests.status_code给我200。在此示例中,我所需要的只是“确定”。在其他情况下,我们的nginx服务器返回更详细的消息,例如“ HTTP / 1.1 500搜索不可用”或“ HTTP / 1.1 500错误的参数”等。我想获取此文本。有没有办法或者我可以用Popen和curl破解一些东西?requests.content和requests.text没有帮助。

马丁·彼得斯(Martijn Pieters)

您正在寻找Response.reason属性

>>> import requests
>>> r = requests.get('http://httpbin.org/get')
>>> r.status_code
200
>>> r.reason
'OK'
>>> r = requests.get('http://httpbin.org/status/500')
>>> r.reason
'INTERNAL SERVER ERROR'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取完整的 HTTP 请求(非响应)标头

来自分类Dev

从HTTP响应获取标头

来自分类Dev

以角度获取获取请求的响应标头

来自分类Dev

无法使用Axios从Http POST请求获取标头

来自分类Dev

在UIWebView上获取HTTP响应标头

来自分类Dev

从http标头响应获取日期

来自分类Dev

Restangular:如何获取HTTP响应标头?

来自分类Dev

无法从请求获取HTTP标头

来自分类Dev

使用python获取http标头(获取405)

来自分类Dev

Python 和 seleniumrequests 获取请求标头

来自分类Dev

HTTP请求标头

来自分类Dev

使用AngularJS发送HTTP标头请求

来自分类Dev

使用标头“ origin”验证HTTP请求

来自分类Dev

使用AngularJS发送HTTP标头请求

来自分类Dev

如何使用Mechanize获取请求标头?

来自分类Dev

如何使用Mechanize获取请求标头?

来自分类Dev

如何从HTTP触发的Python Azure Function请求标头获取请求主机名?

来自分类Dev

即使使用Access-Control-Expose-Headers也无法获取响应标头提取请求

来自分类Dev

Nodejs HTTP 请求,无法更改响应标头

来自分类常见问题

使用RestTemplate的HTTP获取标头

来自分类Dev

使用http响应标头的Flutter Cache JSON响应

来自分类Dev

使用 Python 请求库从单个 GET 请求中获取标头和内容

来自分类Dev

如何使用python请求模块创建自定义标头

来自分类Dev

如何在VBScript中获取http响应标头

来自分类Dev

在Firefox插件中获取HTTP响应标头

来自分类Dev

Python请求模块-仅发送指定的标头

来自分类Dev

Http POST请求获取标头和正文

来自分类Dev

从http调用-mule中的请求标头获取值

来自分类Dev

如何在compojure请求中获取特定的HTTP标头