传输编码:在Windows Phone的分块(Transfer-Encoding: chunked

2019-07-20 02:23发布

我有一个传输编码的服务器响应:分块

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块大小。

我怎么能不看使用的Windows Phone块原始响应流HttpWebResponse


提示:使服务器禁用分块输出,我只需要指定HTTP / 1.0协议的版本。 但我不知道该怎么做,因为没有ProtocolVersion物业HttpWebRequest Windows Phone中或Silverlight类

Answer 1:

HttpClient是能够自动解析分块输出http://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx

HttpClient是PostAsync和GetAsinc和吨的其他善良的整体很酷的事情。 我从来没有,以后再使用HttpWebRequest的。

HttpClient是.NET框架4.5,Windows 8或Windows Phone的8.1一应俱全

使用NuGet包http://www.nuget.org/packages/Microsoft.Net.Http .NET框架4 - -的Windows Phone的Silverlight 7.5 - Silverlight 4个中-便携式类库,如果你需要的HttpClient在



Answer 2:

您可以阅读下列方式分块响应:

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


文章来源: Transfer-Encoding: chunked in Windows Phone