花费一些时间研究pycurl和libcurl文档,我仍然找不到(简单)方法,如何在pycurl中获取HTTP状态消息(reason-phrase)。
状态代码很简单:
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"
答案 0 :(得分:25)
我自己找到了一个解决方案,它可以满足我的需求,但可以更强大(适用于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"
答案 1 :(得分:2)
我认为你可以使用human_curl库来创建简单的代码。
>>> import human_curl as hurl
>>> r = hurl.get('http://example.org')
>>> print r.status_code
200
关于human_curl的完整文档,您可以访问https://github.com/Lispython/human_curl
答案 2 :(得分:2)
这是一个老线程,但我到这里寻找类似的信息。如果它只是您正在寻找的状态代码,例如200,404,500等,那么就这样做:
<!DOCTYPE html>
<html>
<body>
<form method="post" action="" id="configForm">
<label for="home">Home:</label>
<br>
<input type="text" id="home" name="home" required>
<br>
<label for="apendix">Apêndice:</label>
<br>
<input type="text" name="apendix" required>
<br>
<label for="about">Sobre:</label>
<br>
<input type="text" name="sobre" required>
<br>
<label for="contato">Contato:</label>
<br>
<input type="text" name="contato" required>
<br><br>
<input type="submit" value="Carregar" name="submit"> </form>
</body>
</html>
应返回数字状态代码:)
答案 3 :(得分:-1)
尝试使用BaseHTTPServer.BaseHTTPRequestHandler.responses,它应该包含一个错误代码字典,如this page中所述。
希望这会有所帮助。