【发布时间】:2015-04-23 10:21:24
【问题描述】:
在 Windows 商店应用程序项目中我有这个方法
private async void getUSerImage()
{
try
{
using (var httpClient = new HttpClient { BaseAddress = Constants.baseAddress })
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", App.Current.Resources["token"] as string);
using (var response = await httpClient.GetAsync("user/image"))
{
string responseData = await response.Content.ReadAsStringAsync();
byte[] bytes = Encoding.Unicode.GetBytes(responseData);
StorageFile sampleFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("userImage.jpg", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteBytesAsync(sampleFile, bytes);
var stream = await sampleFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
}
}
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
}
}
我正在尝试将接收到的二进制数据转换为字节并将其保存为文件 这就是 responseData 包含的内容,如下所示:
图像已创建但已损坏,我无法打开它我假设是这个
byte[] bytes = Encoding.Unicode.GetBytes(responseData);
没有用
webservice 文档说“主体包含二进制图像数据” 有没有更好的方法将接收到的二进制数据转换为字节并保存到文件中?
编辑:
我最终这样做了,它成功了
Stream imageStream = await response.Content.ReadAsStreamAsync();
byte[] bytes = new byte[imageStream.Length];
imageStream.Read(bytes, 0, (int)imageStream.Length);
StorageFile sampleFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("userImage.jpg", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteBytesAsync(sampleFile, bytes);
var stream = await sampleFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
【问题讨论】:
-
问题在哪里?
-
哦,我编辑我的帖子:) 抱歉
-
我知道这是一个老问题,但万一其他人偶然发现它,我相信 Ric 解决方案中的前三行代码可以替换为 byte[] bytes = response.Content.ReadAsByteArrayAsync ();
标签: c# windows-runtime windows-store-apps httpclient binary-data