この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 1|答える: 0

[出典] .NET/C#は、Hypertext Transfer Protocolに基づくHTTP(s)リクエストを送信するためにSocketを使用します

[リンクをコピー]
掲載地44秒前 | | | |
要件:毎日、ウェブページやアプリを開く際、閲覧した情報はほぼ必ずHTTPまたはHTTPSリクエストの応答によってアクセスされます。C#を使い、Hypertext Transfer Protocolとネイティブソケットを使ってHTTPリクエストを送信します。

合意

ハイパーテキスト転送プロトコル(HTTP)は、分散型の協働ハイパーテキスト情報システムで使用される状態のないアプリケーション層プロトコルです。

HTTP / 1.1 プロトコル(RFC 9112):ハイパーリンクのログインが見えます。
HTTP意味論(RFC 9110):ハイパーリンクのログインが見えます。

例示リクエスト:
HTTP/1.1 hello.txt取得
User-Agent: curl/7.64.1
Host: ハイパーリンクのログインが見えます。
Accept-Language: en, mi

サンプル回答:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

こんにちは、世界!私のコンテンツには後尾のCRLFが含まれています。

ソケットはリクエストを送信します

ソースコードは以下の通りです:
ソースコードはHTTPおよびHTTPSプロトコルへのリクエスト送信をサポートしています。以下に示すように:



接続:近い vs キープアライブ

ReadToEndAsyncを使ってレスポンスからすべてのデータを読み取る場合、接続をクローズに設定する必要があります。キープアライブに設定すると、ReadToEndAsyncのレスポンスはフリーズします。フリーズしない理由:多くのウェブサーバー(Nginx、Apache、特定のAPIゲートウェイなど)は、クライアントがネイティブにソケットを書き込む場合や、サーバーがアイドルタイムアウト(通常5秒に設定され)をトリガーすると、TCP接続を閉じるためにFINパケットを積極的に送信します。

HTTPパイプラインは複数のリクエストを同時に送信します:ハイパーリンクのログインが見えます。

Transfer-Encoding: chunked 表示数据是以分块的形式传输的。每个数据块前面都有一个指示该块大小的十六进制数字,这个数字后面跟着一个换行符(CRLF),然后是实际的数据内容,再接着另一个换行符来结束这一块。这种编码方式允许服务器在不知道全部内容长度的情况下开始发送数据。

FDD8は、次のデータブロックのサイズ(バイト単位)を指定する16進数です。fdd8を16進数から10進数に変換すると65,016バイトになります。つまり、fdd8とCRLFの直後に65,016バイトのデータが存在します。その後、さらにデータブロックが増え、サイズ0のブロックに遭遇するまで続き、これは送信完了を示します。

FDD8は受信側に次のデータブロックの長さが65,016バイトであることを伝えます。




先の:HTTP(s)テストサイト概要(継続的に更新)
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com