1つの方法は、正規表現を使用してHTTP応答を手動で検索することです。
別の方法は、http-parserプロジェクトのhttp_parser.cモジュールから必要なものを移植することです。 ここからダウンロードできます:https://pypi.python.org/pypi/http-parser/
HTTPレスポンスは、ソケットレベルで動作するhttp-parserを使用して解析できます。ここで
は説明です:
のhttp-パーサをあなたのPythonプログラムにアクセスすることができますCでparser.HttpParser低レベルのパーサを提供し、http.HttpStream読める、シーケンシャルIOに高いレベルのアクセスを提供します.RawIOBaseオブジェクト。ここで
はあなたが与えた例にかかる方法で、Pythonでのソケットを使用してHTTP応答を解析する方法である:これは私の質問に答えていない
https://github.com/benoitc/http-parser/tree/master/http_parser
def main():
p = HttpParser()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
body = []
try:
s.connect(('gunicorn.org', 80))
s.send("GET/HTTP/1.1\r\nHost: gunicorn.org\r\n\r\n")
while True:
data = s.recv(1024)
if not data:
break
recved = len(data)
nparsed = p.execute(data, recved)
assert nparsed == recved
if p.is_headers_complete():
print p.get_headers()
if p.is_partial_body():
body.append(p.recv_body())
if p.is_message_complete():
break
print "".join(body)
finally:
s.close()
、私が探しています私の質問で明示的に言及したように、外部ライブラリを使用しない400、404などの特定のエラーを手動で処理する方法。 – Jarvis
私は、HTTPエラーを検出する手作業の手段を見つけるための質問に直接対処するために私の答えを修正しました。私はそれがあなたを助けたと思った。 –