我正在使用Windows.Web.Http
命名空间编写Windows UWP程序。我偶然发现一个MSDN帖子提到下面的代码将强制分块编码。它确实这样做了。我已尝试更改块大小(http请求),但大小停留在0x10000
。
GetInputStreamAt(0)
触发分块的理由是什么?看起来像一个奇怪的,没有记录的任何地方的副作用。它有什么逻辑吗?以下是MSDN发布: HttpStreamContent won't save stream
Windows.Storage.Streams.InMemoryRandomAccessStream contentStream = new Windows.Storage.Streams.InMemoryRandomAccessStream();
Windows.Storage.Streams.DataWriter dw = new Windows.Storage.Streams.DataWriter(contentStream);
dw.WriteBytes(System.Text.Encoding.UTF8.GetBytes(body));
dw.StoreAsync().AsTask();
content = new Windows.Web.Http.HttpStreamContent(contentStream.GetInputStreamAt(0));
content.Headers.Add("Content-Type", "application/json; charset=utf-8");
MSFT Guy Says:
... contentStream.Seek(0)和contentStream.GetInputStreamAt(0)之间的区别是:使用第一种方法实际发送Content-Length HTTP标头,后跟实体主体,而第二种方法使用Transfer -Encoding:分块的HTTP头,然后是HTTP块。这在目标服务器仅接受HTTP请求的“特定”格式的情况下很有用。