0

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

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

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

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

1 回答 1

0

在 2013 年 2 月的 httpclient 测试版中,windows phone 不支持分块响应。它应该被添加到下一个公开版本中。

于 2013-04-30T22:00:29.370 回答