2017-02-09 4 views
1

Я использую Refit в своем приложении C# для взаимодействия с REST API, а метод API имеет вызов, который возвращает изображение .jpg. Я хочу загрузить это изображение с помощью Refit и получить его как массив байтов, но, похоже, он возвращает искаженную строку. Смотри ниже. Ниже метод интерфейса для загрузки изображенияRefit (C#) - Скачайте изображение

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

Я попытался разбора строки в виде строки Base64, но это не сработало, так что я полагаю, что это не так. Есть идеи?

EDIT: Первая строка искаженного ответа здесь. Обратите внимание, что при переходе на этот же URL-адрес в браузере он отлично работает и отображает изображение

\ 0 \ u0010JFIF \ 0 \ u0001 \ u0001 \ 0 \ 0H \ 0H \ 0 \ 0 \ 0XExif \ 0 \ 0мм \ 0 * \ 0 \ 0 \ 0 \ Ь \ 0 \ u0002 \ u0001 \ u0012 \ 0 \ u0003 \ 0 \ 0 \ 0 \ u0001 \ 0 \ u0001 \ 0 \ 0i \ 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 \ u003 \ u0001 \ "\ 0 \ u002 \ u0011 \ u003 \ u003 \ u0011 \ u0001 \ 0 \ u001f

+0

Я думаю, мы должны были бы знать, каким образом данные кодируются в строку, чтобы декодировать его. Что содержит эта строка? – David

+0

Это очень долго, поэтому я поставил первые несколько строк. – Chris

+0

@ Крис вы можете загрузить полный контент на сайт io dump – Dbl

ответ

0

Я работал this out - тип возврата должен быть Задачей, которая затем может быть прочитана из свойства Content на нем. Th anks за помощь, хотя!

1

Что сработало для меня было, чтобы метод был объявлен как возвращаемый Task<HttpContent>, а затем вы можете извлекать данные из возвращаемого экземпляра HttpContent различными способами.

Например:

Task<HttpContent> DownloadPhoto(Guid id); 

И потом:

HttpContent content = await DownloadPhoto(guid); 
byte[] bytes = await content.ReadAsByteArrayAsync(); 
Смежные вопросы