希望有人可以请求我在很长一段时间内努力解决的问题。
目标:我需要从指定的URI读取一个http流,我启动&无休止地阅读以下代码(我将其删除至最低限度,以便真正专注于裸通信问题):
public void StartupStream(Uri uri)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
// Start the asynchronous request
request.BeginGetResponse(OnGetResponse, request);
}
private void OnGetResponse(IAsyncResult asyncResult)
{
// get the response
HttpWebRequest req = (HttpWebRequest)asyncResult.AsyncState;
try
{
using (HttpWebResponse resp = (HttpWebResponse)req.EndGetResponse(asyncResult))
{
using (Stream s = resp.GetResponseStream())
{
// dummy-read the stream forever
int readBytes = 0;
byte[] buffer = new byte[4096];
while (true)
{
readBytes += s.Read(buffer, 0, buffer.Length);
}
}
}
}
catch (Exception ex)
{
throw;
}
finally
{
req.Abort();
}
}
问题:碰巧上面相同的完全代码完全在演示桌面WPF应用程序上运行,读取“千兆字节”数据没有任何问题,而在Windows Phone 8.1商店应用程序上我只能读取最多65536个字节,然后随后调用s.Read(buffer,0,buffer.Length)(在无限while循环中)只是永远挂起,没有任何异常!
我已尝试过的事情,没有任何结果:
有没有人知道在WP 8.1上使用这种简单的HTTP流使用可能会发生什么?怎么会对读取有65536字节的限制?
感谢您的帮助!
答案 0 :(得分:0)
这就是我从网上下载图片的方式。示例中的文件大小为1131683
string URL = "http://img.uuhy.com/uploads/2010/05/4423_Free-high-resolution-desktop-wallpaper-8.jpg";
var httpClient = new HttpClient();
var httpResponse = await httpClient.GetAsync(URL);
var ImageArray = await httpResponse.Content.ReadAsByteArrayAsync();