Transfer-Encoding: chunked なリクエストの作り方
世の中にはchunkedリクエストをするHTTPクライアントが存在するらしいです。
確かにRFC的にはchunkedはかならずしもサーバー側の実装だけを想定しているとは読み取れないですね。
さて、chunkedなリクエストを送る方法ですが、Fiddlerを使うと簡単にできます。
ComposerのRawで、以下のようにリクエストを組み立ててあげます。
POST http://testserver.example.com/testcontents.htm HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: ja-JP,en-US;q=0.5 User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Connection: Keep-Alive DNT: 1 Host: testserver.example.com Pragma: no-cache Transfer-Encoding: chunked 9 123456789 8 12345678 0
この場合、リクエストボディサイズは17バイトとなります。
BODY部分、0のあとには空行が必要です。
ちなみにチャンクサイズの「9」「8」は16進数である点に注意してください。
先ほどのchunkedリクエストは、受け手となるサーバーでは以下のリクエストと等価として扱われるはずです。
POST http://testserver.example.com/testcontents.htm HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: ja-JP,en-US;q=0.5 User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Connection: Keep-Alive DNT: 1 Host: testserver.example.com Pragma: no-cache Content-Length: 17 12345678912345678