6

我在我的 C# 应用程序中使用 Refit 与 REST API 交互,并且 API 方法有一个返回 .jpg 图像的调用。我想使用 Refit 下载此图像并将其作为字节数组获取,但它似乎返回了一个乱码。见下文。下载图片的界面方法见下图

 [Get("/Photos/{id}")]
 Task<string> DownloadPhoto(Guid id);

我尝试将字符串解析为 Base64 字符串,但这不起作用,所以我认为不是这样。有任何想法吗?

编辑:这里的第一行乱码响应。请注意,如果在浏览器中访问相同的 URL,它可以正常工作并显示图像

����\0\u0010JFIF\0\u0001\u0001\0\0H\0H\0\0��\0XExif\0\0MM\0*\0\0\0\b\0\u0002\u0001\ u0012\0\u0003\0\0\0\u0001\0\u0001\0\0�i\0\u0004\0\0\0\u0001\0\0\0&\0\0\0\0\ 0\u0003�\u0001\0\u0003\0\0\0\u0001\0\u0001\0\0�\u0002\0\u0004\0\0\0\u0001\0\0\u0002X�\u0003 \0\u0004\0\0\0\u0001\0\0\u0003 \0\0\0\0��\08Photoshop 3.0\08BIM\u0004\u0004\0\0\0\0\0\08BIM\ " \0\u0002\u0011\u0001\u0003\u0011\u0001��\0\u001f

4

2 回答 2

14

对我有用的是将方法声明为返回 Task<HttpContent>,然后您可以以各种方式从返回的 HttpContent 实例中检索数据。

例如:

Task<HttpContent> DownloadPhoto(Guid id);

接着:

HttpContent content = await DownloadPhoto(guid);
byte[] bytes = await content.ReadAsByteArrayAsync();
于 2017-05-23T15:38:35.363 回答
1

您可以使用 refit 获取字节数组,如下例所示

[Get("/Photos/{id}")]
Task<HttpResponseMessage> DownloadPhoto(Guid id);

然后您可以从中获取字节数组

var Response = await YourRefitClient.DownloadPhoto(id);
byte[] ByteArray = await Response.Content.ReadAsByteArrayAsync();
于 2020-02-24T01:04:26.437 回答