Как получить сообщение о состоянии HTTP в (py) завихрение?

проводя некоторое время, учащееся pycurl и libcurl документацию, я все еще не могу найти (простой) путь, как получить сообщение о состоянии HTTP (фраза причины) в pycurl.

код состояния легок:

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"
21
задан mykhal 28 April 2010 в 09:37
поделиться

2 ответа

Я нашел решение я, который делает то, что мне нужно, но может быть более надежным (работает для 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"
28
ответ дан 29 November 2019 в 21:12
поделиться

Попробуйте BaseHTTPServer.BaseHTTPRequestHandler.responses, он должен содержать словарь кодов ошибок, как описано в на этой странице .

надеюсь, что это поможет.

-1
ответ дан 29 November 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: