Java 为什么在服务器上的android中找不到图像文件而在浏览器中打开

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

我正在尝试从服务器下载图像。很少有人在下载,也很少有人在制造问题。我不知道为什么

我已在同一位置下载并向用户显示图像。这是可以下载的文件

当我试图下载下面的图片此图像在浏览器中打开,但未在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)

这是我的密码

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”