我有一个带有Transfer-Encoding的服务器响应:chunked
HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Mon, 18 Feb 2013 08:22:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
c7
{<some json data>}
0
在json数据之前查看c7块大小。
如何使用HttpWebResponse
?
提示:要使服务器禁用分块输出,我只需要指定HTTP / 1.0协议版本。但我不知道该怎么做,因为Windows Phone或Silverlight中的ProtocolVersion
类中没有HttpWebRequest
属性
答案 0 :(得分:1)
HttpClient
能够自动解析分块输出
http://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx
HttpClient
对于PostAsync和GetAsinc来说是一件非常酷的事情,还有很多其他优点。
我再也没有使用过HttpWebRequest。
HttpClient
在.NET Framework 4.5,Windows 8或Windows Phone 8.1中随时可用
如果您需要HttpClient,请使用NuGet包http://www.nuget.org/packages/Microsoft.Net.Http - .NET Framework 4 - Windows Phone Silverlight 7.5 - Silverlight 4 - 便携式类库
答案 1 :(得分:0)
您可以通过以下方式阅读分块响应:
public static byte[] ReadChunkedResponse(this WebResponse response)
{
byte[] buffer;
using (var stream = response.GetResponseStream())
{
using (var streamReader = new StreamReader(stream, Encoding.UTF8))
{
var content = new StringBuilder();
while (!streamReader.EndOfStream)
{
content.Append((char)streamReader.Read());
}
buffer = Encoding.UTF8.GetBytes(content.ToString());
}
}
return buffer;
}