2014-02-17 206 views
0

我正在閱讀一個流,但是當我試圖解碼它(轉換爲位圖)時,我得到空值,不會引發異常。Android multipart/x-mixed-replace - 從inputstream解碼位圖返回null

這是我的代碼:

HttpGet httpRequest = new HttpGet(URI.create(link)); 
HttpClient httpclient = new DefaultHttpClient(); 
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest); 
HttpEntity entity = response.getEntity(); 
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 

Bitmap bitmap = BitmapFactory.decodeStream(bufHttpEntity.getContent()); 

InpuStream這是我從bufHttpEntity.getContent()得到的是不爲空,它具有38點KB的數據。 我所知道的流服務器是頭部有內容類型:multipart/x-mixed-replace;boundary=<boundary-name>

如果我打開瀏覽器中的鏈接,它正在工作,我可以看到圖像,但是當我試圖將它轉換成一個Bitmap我得到null。

回答

0

有一起來看看BitmapFactory.decodeStream()文檔:

解碼的位圖,或NULL,如果圖像數據不能被解碼。

我想這就是導致這個問題的原因。 multipart表示內容可以包含多個文件,由邊界和單獨的標題分隔。即使只有一個文件,它也會被標題框起來,並且在開始和結束時會出現邊界。我真的不知道multipart/x-mixed-replace;boundary=<boundary-name>是什麼意思。

HttpEntity不會刪除邊界,因此無法解碼位圖。

嘗試將內容保存到文件,並在HEX查看器中查看。然後,您將知道如何「轉換」接收到的數據,以便解碼位圖。

相關問題