我有問題類似this one。 該應用必須通過wlan與相機進行通信。Stream.ReadAsync不適用於Windows Phone 8.1
在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-Call將引發NotSupportedException。
有什麼想法?
來自德國 拉爾夫
而
問候是有不同之處的消息? (另外,如果你遵循.NET的命名約定,使用'camelCase'作爲局部變量,它會讓你的代碼更容易閱讀。) –
那麼我面臨的問題與你已經引用的帖子中提到的相同。我們從system.net.http更改爲windows.web.http,它工作。所以肯定有一些問題與system.net.http值得調查。在Windows運行時使用時,我們發現system.net的HTTPClient不是非常有用。 – saurav