我在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没有帮助。
您正在寻找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] 删除。
我来说两句