【问题标题】:Refit (C#) - Downloading image改装 (C#) - 下载图像
【发布时间】:2017-06-27 17:35:05
【问题描述】:

我在我的 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\u0004%\0\0\0\0\0\u0010�\u001d�ُ\0�\u0004�\t���B~��\0\u0011\b\u0003 \u0002X\u0003\ u0001\"\0\u0002\u0011\u0001\u0003\u0011\u0001��\0\u001f

【问题讨论】:

  • 我想我们需要知道数据是如何被编码到字符串中才能解码的。这个字符串实际上包含什么?
  • 篇幅很长,前几行就写完了
  • @Chris 你可以将全部内容上传到某个 io 转储站点

标签: c# refit


【解决方案1】:

对我有用的是将方法声明为返回 Task&lt;HttpContent&gt; 然后可以通过多种方式从返回的 HttpContent 实例中检索数据。

例如:

Task<HttpContent> DownloadPhoto(Guid id);

然后:

HttpContent content = await DownloadPhoto(guid);
byte[] bytes = await content.ReadAsByteArrayAsync();

【讨论】:

    【解决方案2】:

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

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

    然后就可以从

    获取字节数组了
    var Response = await YourRefitClient.DownloadPhoto(id);
    byte[] ByteArray = await Response.Content.ReadAsByteArrayAsync();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 2016-03-18
      相关资源
      最近更新 更多