我的问题类似于this。 该应用程序必须通过wlan与相机通信。
在Windows 8.1上,应用程序运行正常 - 一切正常。 在Windows Phone 8.1上,我成功调用了ReadAsync(...)NotSupportedException。
我以这种方式打开流:
public async Task<Stream> OpenHttpURLConnectionAsync(string url)
{
WebRequest request = WebRequest.Create(new Uri(url));
var r = (WebResponse)await request.GetResponseAsync();
if (r != null)
{
try
{
return r.GetResponseStream();
}
catch (InvalidOperationException ex)
{
Debug.WriteLine(ex.Message);
return null;
}
}
throw new Exception("Cannot connect to service");
}
在此功能中使用此流:
public async Task<byte[]> ReadBytesAsync(Stream stream, int length)
{
if (stream != null)
{
byte[] Puffer = new byte[length];
int Position = 0;
int BlockSize = 128;
int Rest = length;
while ((Position < length))
{
if (Rest < BlockSize)
BlockSize = Rest;
int ReadCount = await s.ReadAsync(Puffer, Position, BlockSize, System.Threading.CancellationToken.None);
Position += ReadCount;
Rest -= ReadCount;
}
return Puffer;
}
return null;
}
在商店应用中,流类型为System.Net.Stream, 在手机应用程序中,类型为System.Net.ConnectStream。
我尝试了不同的块大小,但这不会改变行为:作为商店应用程序一切正常,因为手机应用程序无法正常工作: 第一个ReadAsync读取8个字节并且可以工作。 第二个ReadAsync读取128个字节并且也可以工作。 然后,应用程序必须读取一些“massdata”(jpeg),并且在1316字节之后,ReadAsync调用将抛出NotSupportedException。
有什么想法吗?
来自德国的问候 拉尔夫
答案 0 :(得分:0)
感谢@saurav:是的,System.net.http就是问题所在:
System.Net.Http和System.Net.Http.Headers命名空间可能在Windows的未来版本中不可用,以供Windows应用商店应用使用。从Windows 8.1和Windows Server 2012 R2开始,使用Windows.Web.Http命名空间中的Windows.Web.Http.HttpClient和相关的Windows.Web.Http.Headers和Windows.Web.Http.Filters命名空间代替Windows应用商店应用
查看here了解详情。
看来,httpclient的8.1手机实现效果不是很好。
对windows.net.http的更改完全解决了我的问题 - 再次感谢@saurav。
来自德国的问候 拉尔夫