使用WindowsPhone的httpClient流无法正常工作?相同的代码适用于Windows应用商店

时间:2013-04-27 22:40:14

标签: windows-phone-7.1 portable-class-library dotnet-httpclient

有没有办法在windowsphone上从httpClient获取响应的流式传输结果? 我在PCL目标WP7.1 +中有以下代码(如果将代码移动到手机项目也是同样的问题),它可以在windowsstore应用程序中正常运行,但在Windows手机上,请求永远不会像在商店应用。

一旦HttpResponseMessage可用,它已经指定了Content-Length - 这个数据流正在缓慢填充。

我尝试指定一个Connection Keep-Alive标头,但是在手机上,指定该标头会导致ArgumentException“标头连接具有空值”。商店应用程序很好用

        resp = m_httpClientStream.SendAsync(request,
                HttpCompletionOption.ResponseHeadersRead, m_ctsStream.Token);

        resp.ContinueWith(
                (responseTask) =>
                {
                    HttpResponseMessage respMsg;
                    try
                    {
                        respMsg = responseTask.Result;
                    }
                    catch (Exception e)
                    {
                        return;
                    }

                    Task<Stream> respStream = respMsg.Content.ReadAsStreamAsync();
                    respStream.ContinueWith(
                        async (respStreamTask) =>
                        {
                            Stream streamResp = respStreamTask.Result;

                            int read = 0;
                            do
                            {
                                byte[] responseBuffer = new byte[500];
                                read = await streamResp.ReadAsync(responseBuffer, 0, responseBuffer.Length);
                                string result = Encoding.UTF8.GetString(responseBuffer, 0, read);

                                //callback
                            } while (read != 0);
                        });
               });

1 个答案:

答案 0 :(得分:0)

在2013年2月的httpclient测试版中,Windows手机不支持分块响应。它应该被添加到下一个公开发布。