ソケットとHttpプロトコルの詳細については、私自身のPython 3のhttpライブラリをコード化しようとしています。私の質問は、私のソケットを使ってrecv(bytesToRead)を行う場合、どうすればヘッダーだけを取得し、次にContent-Length情報を取得してページコンテンツを受信し続けることができますか?それはContent-Lengthヘッダーの目的ではありませんか? ありがとうございますHttpプロトコル、Content-Length、ページコンテンツを取得するPython
0
A
答えて
2
これまで、これを達成するために、私はソケットデータの一部をメモリに読み込み、そのバッファから "\ r \ n \ r \ n"シーケンスが遭遇するまで読み込みますステートマシンを使ってこれを行うか、単純にstring.find()関数を使用することができます。そのシーケンスに達すると、すべてのヘッダーが読み込まれていることが分かり、ヘッダーの解析をいくつか行い、コンテンツの長さ全体を読み取ることができます。
このシーケンスを見る前にバッファが不足している場合は、ソケットからさらに多くのデータを読み込んで処理を続行します。
見たい場合はC#の例を投稿できます。
関連する問題
- 1. のHttpん。ContentLengthなどのHttpResponseメッセージん。ContentLengthを取得
- 2. RetrofitでContentLengthを取得する方法
- 3. URLからページコンテンツを取得
- 4. カスタムテンプレート形式のページコンテンツを取得する
- 5. Gebテストフレームワーク - 生のページコンテンツを取得する
- 6. Rubyのページコンテンツを取得する
- 7. NSHTTPURLResponseからHTTPプロトコルのバージョンを取得するには?
- 8. Zend \ Http \ ClientとCurlを持つ特定のサーバのPHPページコンテンツを取得する
- 9. Python HTTPServer - HTTP本体を取得する
- 10. Trac - プログラミングによるwikiページコンテンツの取得
- 11. php:AJAXがロードされたページコンテンツを取得
- 12. Firebase XMPPプロトコル対HTTPプロトコル
- 13. winsockのソケットのプロトコルを取得する
- 14. WPのラッパーを使ってページコンテンツを取得する
- 15. iOS + Android HTTPプロトコル
- 16. ブラウザのようなWebページコンテンツを取得する
- 17. 内部リンクでWikipediaのページコンテンツを取得するには?
- 18. cURL iframeのようなページコンテンツを取得する
- 19. HTTPプロトコル違反HtmlAgilityPack
- 20. httpsプロトコルのhttpアダプタ
- 21. HTTPプロトコル:HTMLのみ?
- 22. httpプロトコル、ネットワーク、Webアプリケーション
- 23. URLからページコンテンツを取得しますか?
- 24. 私はJavaScriptコードCurlでWebページコンテンツを取得しています
- 25. urlopen/requests.getすべてのページコンテンツを取得しない
- 26. HTTP経由でPythonでHTTPプロキシ経由でFTP URLを取得する
- 27. HTTPリクエストサンプラーのプロトコルを空にするJMeter
- 28. サーバー間でhttpプロトコルを使用する
- 29. PythonでHTTP POST要求パラメータを取得する(
- 30. のHttpWebRequest - ん。ContentLength警告
ありがとうございますが、私はC#についてよく分かりませんが、コンテンツの長さがわからない場合はどうすればよいですか?新しい行が見つかるまで読むだけですか? – Lautaro
あなたが持っている他のヘッダーと接続がkeep-aliveであるかどうかによって決まります。要求ヘッダー "Connection:close"を送信して要求したか、またはサーバーがキープアライブをサポートしていないためです。接続が閉じている場合は、ソケット上で利用可能なデータがなくなるまで読み取ります。これはドキュメントの終わりを表します。またはサーバーがチャンクエンコーディングで応答します。その場合は、チャンクレスポンスの読み取りをサポートする必要があります。私はこれもC#の例があります。私は理解して、C#がそれを理解するのが難しくなるかもしれないことを知らない。 – drew010
ステートマシンの良い例については、ryの[http-parser](https://github.com/ry/http-parser) – jterrace