-1

私は BaseHTTPRequestHandler を使用して httpserver を実装しています。do_PUT/do_POST で複数行の投稿データを読み取るにはどうすればよいですか?

編集: サーバー上のリスナーのような、いくつかのカスタム リクエストを処理するスタンドアロン スクリプトを実装しようとしています。これは、さまざまなログ ファイルから統合/アーカイブ/抽出します。Web サーバーを必要とするものを実装したくありません。 Python での経験が豊富なため、誰かがより良い解決策を指摘できれば幸いです。

Edit2:外部ライブラリ/モジュールを使用できません。プレーンなバニラ python 2.4/java1.5/perl5.8.8、制限付きポリシーで間に合わせる必要があり、私の手は縛られています

4

1 に答える 1

5

リクエストの本文を取得するのは から読み取るのと同じくらい簡単self.rfileですが、クライアントが を使用している場合は、どれだけ読み取る必要があるかを知る必要がありますConnection: keep-aliveContent-Lengthクライアントがヘッダーを指定すると、このようなものが機能します...

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler

class RequestHandler(BaseHTTPRequestHandler):

    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        post_data = self.rfile.read(content_length)
        print post_data

server = HTTPServer(('', 8000), RequestHandler)
server.serve_forever()

...クライアントがチャンク転送エンコーディングを使用してデータを送信する場合は、さらに複雑になります。

于 2013-06-19T14:13:51.407 に答える