首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在(py)curl中获取HTTP状态消息?

如何在(py)curl中获取HTTP状态消息?
EN

Stack Overflow用户
提问于 2010-04-28 02:02:39
回答 4查看 23.3K关注 0票数 22

花了一些时间研究pycurl和libcurl文档,我仍然找不到一种(简单的)方法,即如何在pycurl中获取HTTP状态消息(原因短语)。

状态码很简单:

代码语言:javascript
复制
import pycurl
import cStringIO

curl = pycurl.Curl()
buff = cStringIO.StringIO()
curl.setopt(pycurl.URL, 'http://example.org')
curl.setopt(pycurl.WRITEFUNCTION, buff.write)
curl.perform()

print "status code: %s" % curl.getinfo(pycurl.HTTP_CODE)
# -> 200

# print "status message: %s" % ???
# -> "OK"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-29 19:02:08

我自己找到了一个解决方案,它可以做我需要的事情,但可以更健壮(适用于HTTP)。

它基于这样一个事实,即pycurl.HEADERFUNCTION获取的捕获标头包含状态行。

代码语言:javascript
复制
import pycurl
import cStringIO
import re

curl = pycurl.Curl()

buff = cStringIO.StringIO()
hdr = cStringIO.StringIO()

curl.setopt(pycurl.URL, 'http://example.org')
curl.setopt(pycurl.WRITEFUNCTION, buff.write)
curl.setopt(pycurl.HEADERFUNCTION, hdr.write)
curl.perform()

print "status code: %s" % curl.getinfo(pycurl.HTTP_CODE)
# -> 200

status_line = hdr.getvalue().splitlines()[0]
m = re.match(r'HTTP\/\S*\s*\d+\s*(.*?)\s*$', status_line)
if m:
    status_message = m.groups(1)
else:
    status_message = ''

print "status message: %s" % status_message
# -> "OK"
票数 30
EN

Stack Overflow用户

发布于 2016-08-20 10:07:16

这是一个老帖子,但我在这里寻找类似的信息。如果这只是你正在寻找的状态码,比如200,404,500等,那么只需要这样做:

your_curl_handle.getinfo(pycurl.RESPONSE_CODE)

它应该返回一个数字状态代码:)

票数 8
EN

Stack Overflow用户

发布于 2012-04-14 16:40:06

我认为你可以使用human_curl库来创建简单的代码。

代码语言:javascript
复制
>>> import human_curl as hurl
>>> r = hurl.get('http://example.org')
>>> print r.status_code
200

您可以在https://github.com/Lispython/human_curl上获得有关human_curl的完整文档

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2723715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档