我正在读一个流但是当我尝试解码它(转换成位图)时我得到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>
如果我在浏览器中打开链接,它正在工作,我可以看到图像,但是当我尝试将其转换为位图时,我将变为空。
答案 0 :(得分:0)
查看BitmapFactory.decodeStream()
的文档:
解码后的位图,如果无法解码图像数据,则为null。
我猜这就是造成这个问题的原因。 multipart
表示内容可以包含多个文件,由边界和单个标题分隔。即使只有一个文件,它也会被标题框起,并在开头和结尾都有边框。老实说,我不知道multipart/x-mixed-replace;boundary=<boundary-name>
的含义是什么。
HttpEntity
不会删除边界,因此无法解码位图。
尝试将内容保存到文件,并在HEX查看器中查看。然后,您将知道如何“转换”接收的数据,以便解码位图。