C# 传输编码:在Windows Phone中分块

C# 传输编码:在Windows Phone中分块,c#,silverlight,windows-phone-7,httpwebrequest,transfer-encoding,C#,Silverlight,Windows Phone 7,Httpwebrequest,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 HTTP/

我有一个传输编码为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
HTTP/1.1200正常
服务器:nginx/1.2.1
日期:2013年2月18日星期一08:22:49 GMT
内容类型:application/json;字符集=utf-8
传输编码:分块
连接:保持活力
改变:接受编码
c7
{}
0
查看json数据之前的c7块大小

如何使用
HttpWebResponse
在Windows Phone中读取没有区块的原始响应流



提示:要使服务器禁用分块输出,我只需指定HTTP/1.0协议版本。但我不知道如何做到这一点,因为Windows Phone或Silverlight中的
HttpWebRequest
类中没有
ProtocolVersion
属性。您可以通过以下方式读取分块响应:

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;
    }

HttpClient
能够自动解析分块输出


HttpClient
与PostAsync和GetAsinc以及大量其他功能一起,是一款非常酷的产品。 我再也不用HttpWebRequest了


HttpClient
在.NET Framework 4.5、Windows 8或Windows Phone 8.1中随时可用

如果您在中需要HttpClient,请使用NuGet软件包 -.NET框架4 -Windows Phone Silverlight 7.5 -银光4
-可移植类库

您解决了这个问题吗?我在Windows Phone的HTTP协议方面也遇到了问题…我添加了自己的答案。请检查一下。我现在使用HttpClient