2017-02-09 49 views
1

我在我的C#應用​​程序中使用Refit與REST API進行交互,並且API方法有一個返回.jpg圖像的調用。我想使用Refit下載這個圖像並將它作爲一個字節數組,但它似乎返回一個亂碼字符串。見下文。請參見下面的接口方法的圖像改裝(C#) - 下載圖像

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

我試圖解析字符串爲Base64字符串,但沒有工作的下載,所以我相信它不是。有任何想法嗎?

編輯:第一行的亂碼響應在這裏。請注意,如果在瀏覽器中使用此相同的URL,它可以正常工作並顯示圖像

0 \ 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 \ 0I \ 0 \ U0004 \ 0 \ 0 \ 0 \ u0001 \ 0 \ 0 \ 0 \ u0003 \ 0 \ 0 \ 0 \ u0001 \ 0 \ u0001 \ 0 \ 0 \ 0 \ u0003 \ 00001 \ 00001 \ 0000 \ 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

+0

我想我們需要知道數據是如何被編碼成字符串,以便對其進行解碼。這個字符串實際包含什麼? – David

+0

這是非常漫長的,所以我已經把前幾行 – Chris

+0

@Chris你可以上傳完整的內容到一些io dump site – Dbl

回答

0

我工作過這一點 - 返回類型需要是任務,然後可以從它的內容屬性讀取anks的幫助,雖然!

1

什麼對我來說是聲明爲方法返回 Task<HttpContent>,然後你可以從各種方式返回HttpContent實例的數據。

例如:

Task<HttpContent> DownloadPhoto(Guid id); 

然後:

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