HTTP-パーサはライアン·ダールからHTTP-パーサに基づいて、MITライセンスの下でC言語でPython用のHTTPリクエスト/レスポンスパーサーです。
のインストール:の
インストールPIP HTTP-パーサ
またはソースからインストールしてください。
gitのクローンgitの://github.com/benoitc/http-parser.git
CD HTTP-パーサ&&のpython setup.pyインストール
の使用方法:の
HTTP-パーサをあなたのPythonプログラムにアクセスすることができますC言語でparser.HttpParser低レベルのパーサを提供し、http.HttpStreamは読みやすい、シーケンシャルio.RawIOBaseオブジェクトに、より高いレベルのアクセスを提供する。
リーダーモジュール内のhttp-パーサーprvidesあなたの読者の3種類を、あなたの一日の仕事のお手伝いをするには、次のIterReaderは反復可能オブジェクトを読み取るために、にStringReaderは文字列とたStringIOオブジェクトを読み取るために、SocketReaderは同じA&icircとソケットまたはオブジェクトを読み込む。 (recv_into必要です)。もちろんcnan任意io.RawIOBaseオブジェクトを使用します。
C言語でLikre HTTP-パーサあなたが最終的に非同期的に任意のHTTPストリームを解析できるようにするには、Cパーサーに独自のコールバックを渡すことができます。コールバックは、次のとおりです。
on_message_begin()
on_path(パス)
on_query_string(QUERY_STRING)
on_url(URL)
on_fragment(フラグメント)
on_header_field(フィールド、last_was_value)
on_header_value(キー、値)
on_headers_complete()
on_body(チャンク)
on_message_complete()
HttpStreamの例
EX:
#!は/ usr / bin / envをパイソン
輸入ソケット
http_parser.http輸入HttpStreamから
http_parser.reader輸入SocketReaderから
DEFメイン():
  S = socket.socket(socket.AF_INET、socket.SOCK_STREAM)
 試してみてください。
  s.connect(( 'gunicorn.org'、80))
  s.send( "GET / HTTP / 1.1 rを nHost:gunicorn.orgのr n個のの r n ")
とをタップあり、r = SocketReader(複数)
とをタップであり、p = HttpStream(r)は
 印刷p.headers()
 印刷p.body_file()(読み出し)。
 最後に:
  s.close()
__name__ == "__main__"の場合:
  main()の
HttpParserの例:
#!は/ usr / bin / envをパイソン
輸入ソケット
http_parser.parser輸入HttpParserから
DEFメイン():
とをタップであり、p = HttpParser()
  S = socket.socket(socket.AF_INET、socket.SOCK_STREAM)
 ボディ= []
 試してみてください。
  s.connect(( 'gunicorn.org'、80))
  s.send( "GET / HTTP / 1.1 rを nHost:gunicorn.orgのr n個のの r n ")
 真ながら:
 データ= s.recv(1024)
&NBSP、そうでない場合のデータ:
 ブレーク
  recved = LEN(データ)
  nparsed = p.execute(データ、recved)
  recved nparsed ==を主張
 もしp.is_headers_complete():
 印刷p.get_headers()
 もしp.is_partial_body():
  body.append(p.recv_body())
 もしp.is_message_complete():
 ブレーク
 印刷 "" .join(ボディ)
 最後に:
  s.close()
__name__ == "__main__"の場合:
  main()の
あなたは、コード内でより多くのドキュメントを見つける(またはドキュメントのgenereratorを使用)することができます。
の要件の:ます。
- のPythonます。
- CythonあなたがCのコードを再構築する必要がある場合
コメントが見つかりません