I have a server response with 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

See that c7 chunk size before json data.

How can I read a raw response stream without chunks in Windows Phone using HttpWebResponse?


Hint: to make sever disable chunked output, I just have to specify HTTP/1.0 protocol version. But I don't know how to do that as there is no ProtocolVersion property in HttpWebRequest class in Windows Phone or Silverlight

有帮助吗?

解决方案

HttpClient is able to parse chunked output automatically http://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx

HttpClient is an overall cool thing with PostAsync and GetAsinc and tons of other goodness. I never-ever use HttpWebRequest again.

HttpClient is readily available in .NET Framework 4.5, Windows 8, or Windows Phone 8.1

Use NuGet package http://www.nuget.org/packages/Microsoft.Net.Http if you need HttpClient in - .NET Framework 4 - Windows Phone Silverlight 7.5 - Silverlight 4 - Portable Class Libraries

其他提示

You can read chunked response in the following way:

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;
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top