有没有办法从 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);
});
});