1

HttpWebRequest ヘッダーにトレーラーを追加しようとしていますが、ファイル データの終わりの後にそのトレーラーを追加していません。

wreq.ContentType = "application/octet-stream";
wreq.AllowWriteStreamBuffering = false;
wreq.SendChunked = true;
//wreq.Headers.Add(HttpRequestHeader.Te, "trailers");
wreq.Headers.Add(HttpRequestHeader.Trailer, "Test");
wreq.Headers["Test"] = "the-value";

using (Stream POSTstream = wreq.GetRequestStream())
{
      //dataByte is file-data in byte[]
      POSTstream.Write(dataByte, 0, dataByte.Length); 
      POSTstream.Flush();
      //hashValue is trailer in byte[]
      POSTstream.Write(hashValue, 0, hashValue.Length);
      POSTstream.Flush();
      POSTstream.Close();
}

空のチャンクの後にこのトレーラー「Test」@ EOFを追加する必要がありますが、追加しません。プログラムでトレーラーを追加しようとすると、トレーラーではなくファイルデータと見なされます。

予想されるリクエスト:

POST <URL> HTTP/1.1
Content-Type: application/octet-stream
Trailer: Test
Transfer-Encoding: chunked

5d    
File-data

0
Test: the-value

実際のリクエスト:

POST <URL> HTTP/1.1
Content-Type: application/octet-stream
Trailer: Test
Transfer-Encoding: chunked

5d    
File-data

5A
Test: the-value
0

このテスト トレーラーがブランク チャンクを取得しない理由。このトレーラは、ファイルの終わりを識別するためにサーバーで使用されます。助けてください。

4

1 に答える 1