gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:46:33 25 4
gpt4 key购买 nike

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

状态码很简单:

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"

最佳答案

我自己找到了一个解决方案,它可以满足我的需要,但可能更强大(适用于 HTTP)。

这是基于 pycurl.HEADERFUNCTION 获取的捕获头包含状态行这一事实。

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"

关于python - 如何在(py)curl 中获取 HTTP 状态消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com