我在 Android 上使用 HttpClient 下载图像时遇到问题。看起来当图像像“可下载文件”一样从服务器推送时它不起作用。另一方面,在浏览器中直接显示的图像下载没有任何问题。 它看起来像是提供的文件的 header 和 mimetype 的问题,或者类似的东西......我认为这是服务器上启用 gzip 的问题,但经过几次实验后,它看起来绝对不是这样。 有人知道如何解决这个问题吗?谢谢
这是我的代码的简短 fragment
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
Drawable image = Drawable.createFromStream(is, "src"); //the image is null in certain scenarios
最佳答案
Drawable.createFromStream()
并不是真正要通过远程 HTTP 连接构建图像。事实上,如果您查看此方法的源代码,它最终会调用 BitmapFactory.decodeResourceStream()
,该函数用于从应用程序的内部资源创建图像。
我建议您尝试直接使用 BitmapFactory
上的方法来解码来自网络的图像。有些选项是 decodeStream()
但有时网络可能会出现问题,无法保持缓冲区足够满以支持此方法。您还可以自己将流中的字节读取到 byte[]
中并使用 decodeByteArray()
。采用这种方法您可能会有更好的运气。
关于java - 通过 HttpClient 下载无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13669594/