java - 通过 HttpClient 下载无法正常工作

标签 java android download apache-commons-httpclient

我在 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/

相关文章:

java - Solr 仅在子查询匹配时返回父文档

java - 为什么不允许使用不同的泛型类型作为参数进行重载?

android - 在 Android Phonegap 应用程序中处理推送通知消息

html - 表格仅在第一次发送

java - 如何在 Java 中解析 WSDL 中的复杂类型以获取其中的基本元素?

java - 日期格式异常无法解析日期

android - 如何添加 <supports-screens> 标签 android manifest

android - Unity 插件的运行时错误(来自 Activity 外部的 startActivity..)

command-line - WinSCP 基于时间的文件下载

php - 如何使用密码保护网站上可下载的 pdf 文件