Java 为什么在服务器上的android中找不到图像文件而在浏览器中打开
我正在尝试从服务器下载图像。很少有人在下载,也很少有人在制造问题。我不知道为什么 我已在同一位置下载并向用户显示图像。这是可以下载的文件 当我试图下载下面的图片此图像在浏览器中打开,但未在android中下载 这是个例外 java.io.FileNotFoundException:United_M_785.jpg 位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:521) 位于src.com.mongreldog.appsupport.Utils.downloadImage(Utils.java:77) 在src.com.mongreldog.viewfullcompanycommontactivity$3.performInBackground(viewfullcompanycommontactivity.java:607) 位于src.com.mongreldog.appsupport.HeavyWorker.doInBackground(HeavyWorker.java:44) 位于src.com.mongreldog.appsupport.HeavyWorker.doInBackground(HeavyWorker.java:1) 位于android.os.AsyncTask$2.call(AsyncTask.java:185) 这是我的密码Java 为什么在服务器上的android中找不到图像文件而在浏览器中打开,java,android,http,Java,Android,Http,我正在尝试从服务器下载图像。很少有人在下载,也很少有人在制造问题。我不知道为什么 我已在同一位置下载并向用户显示图像。这是可以下载的文件 当我试图下载下面的图片此图像在浏览器中打开,但未在android中下载 这是个例外 java.io.FileNotFoundException:United_M_785.jpg 位于org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStr
public static Bitmap downloadImage(String imageURLStr) {
Bitmap bitmap = null;
InputStream in = null;
try {
URL url = new URL(imageURLStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
in = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(in);
in.close();
} catch (SocketTimeoutException e) {
bitmap = null;
e.printStackTrace();
} catch (IOException e) {
bitmap = null;
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
bitmap = null;
} catch (OutOfMemoryError e) {
e.printStackTrace();
bitmap = null;
}
return bitmap;
}
似乎没有正确解析文件名(“Manchester”和“United”之间的空格)
使用
URLEncoder.encode()
对URL进行编码。使用URL编码器对图像URL
进行编码,因为您可以看到URL
在日志报告中有空格
public static Bitmap downloadImage(String imageURLStr) {
imageURLStr = URLEncoder.encode(imageURLStr, "utf-8");
//... rest of your code.
}
编辑:正如您报告的问题“+”而不是%20 你可以用
public static Bitmap downloadImage(String imageURLStr) {
imageURLStr = imageURLStr.replaceAll(" ", "%20");
//... rest of your code.
}
对于源代码检查,您的第二个URL非常不稳定。在大多数情况下,即使在Chome中,它也可能返回404。我只看过一次图片。我尝试使用
urlcoder.encode()
对URL
进行编码。奇怪的是,它将“
转换为”+“
请尝试Uri.encode(imageURL)
。我只是试了一下,效果很好
我已经在android上测试过了。你确定所有的方法都有相同的分辨率吗…?你如何调用这个方法(意味着在哪里调用以及如何调用)?你是对的,有一些规范。我试图使用您的代码,但它将“”替换为“+”。但是应该是“%20”。谢谢你的回答。我只是试着用Nabeel的答案“Uri.encode()”。以及它的工作原理。上面的replaceAll()解决方案在我看来不是很好。同样的问题。我试图使用您的代码,但它将“”替换为“+”。但它应该是“%20”