如何使用 UCWA API 显示来自 HTTP 响应的 skype 用户照片?

How to display the skype user photo from HTTP Response using UCWA API?

我正在开发通用 Windows 应用程序,在我当前的项目中,我使用统一通信 Web API (UCWA) 来显示 Skype 用户状态,它工作正常,但是当我尝试显示当时卡死的skype用户照片

我按照下面link显示照片 https://msdn.microsoft.com/en-us/skype/ucwa/getmyphoto

我的 GET 请求的响应代码为 200 OK,但我不知道如何显示响应中的图像。

请告诉我如何解决。

-普拉迪普

假设您放置一个 Accept header 指定图像类型,您应该能够查看 Content-Length header 以确定用户是否在服务器上设置了图像.如果长度为零,您应该考虑提供要显示的默认图像。如果没有,我建议您查看 Convert a Bitmapimage into a Byte Array and Vice Versa in UWP Platform,因为您应该将响应 body 视为字节数组,其长度由 Content-Length header.[=12 定义=]

如果由于某种原因没有提供 Accept header,响应 body 不是图像/* 类型,看起来像字符串,那么您可能正在处理 Base64 编码图像。这种情况应该不太可能处理,但如果您需要建议,我建议您查看 Reading and Writing Base64 in the Windows Runtime.

我得到了结果,在获得 HTTP 响应之后,我正在使用下面的行将这些响应内容转换为流类型。

var presenceJsonStr = await httpResponseMessage.Content.ReadAsStreamAsync();

这是显示图片的代码

 var photo = await AuthenticationHelper.Photo();
// Create a .NET memory stream.
                var memStream = new MemoryStream();

                // Convert the stream to the memory stream, because a memory stream supports seeking.
                await photo.CopyToAsync(memStream);

                // Set the start position.
                memStream.Position = 0;

                // Create a new bitmap image.
                var bitmap = new BitmapImage();

                // Set the bitmap source to the stream, which is converted to a IRandomAccessStream.
                bitmap.SetSource(memStream.AsRandomAccessStream());

                // Set the image control source to the bitmap.
                imagePreivew.ImageSource = bitmap;

您可以直接使用URL生成的用户照片资源。只需将图像的 URL 设置为图像容器的来源即可。您的应用程序会自动加载它。