Android 从Internet下载JPEG时出现问题

Android 从Internet下载JPEG时出现问题,android,url,Android,Url,我正在使用下面的类下载图像。我发送的URL是正确的,但URL.getContext()每次都返回null。有人知道为什么吗 package com.WasserSportLotse; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import android.content.Context; import a

我正在使用下面的类下载图像。我发送的URL是正确的,但URL.getContext()每次都返回null。有人知道为什么吗

package com.WasserSportLotse;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

import android.content.Context;
import android.graphics.drawable.Drawable;


class ImageDownloader {
    private Drawable d;

    public ImageDownloader(Context ctx, String url, String saveFilename) {
        try {
            InputStream is = (InputStream) this.fetch(url);
            d = Drawable.createFromStream(is, "src");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public Drawable getImage(){
        return d;
    }

    public Object fetch(String address) throws MalformedURLException,IOException {

        URL url = new URL(address);
        Object content = url.getContent();
        return content;
    }
}

调用
url.getContent()
将返回一个图像(如果适用),并且只有一个图像流不是图像或音频剪辑。虽然现在这似乎不是你的问题,但一旦你弄明白了这一点,这将是一个问题


您的代码看起来是正确的。我能想到的唯一一件事是地址没有建对。它可能在浏览器中工作,但URL类可能比浏览器更挑剔。请确保您使用的是完整格式的URL,带有前缀http://(不仅仅是www)

我对该类做了很多更改,并找到了一个更简单的版本

    private String path = "http://www.*YOURPATH.COM/SOMETHING*";
    private String file;
    private String url;

    public ImageDownloader(String file){
        this.file = URLEncoder.encode(file);
        url = path + this.file;

    }

    public Drawable getImage() throws IOException, MalformedURLException {
        return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), "name");
}

地址是正确的,我是从存储在Web服务器上的JSON对象获得的。当我在浏览器中输入地址时,我可以看到图像。我会说,尝试扩展代码,以便您更容易看到问题所在。使用此构造函数:
URL(字符串协议、字符串主机、字符串文件)
并调用
URLConnection connection=URL.openConnection()
,然后调用
connection.getContent()
。你所做的一切都相当于这一点,但希望走一条漫长的路能告诉你问题出在哪里。如果这一切都不起作用,我会选择另一条路。尝试使用
HttpGet
。我从JSon对象接收到的URL字符串包含该文件,因此仅为了让http重新构建它而将其切碎是没有意义的。我可以运行url.openConnection()tho。url显示路径为/media/images/uploads/Mühlendammschleuse.jpg,文件为/media/images/uploads/Mühlendammschleuse.jpg。文件应该是Mühlendammschleuse.jpg吗?“ü”这可能是问题所在…文件名中的特殊字符。你需要对它进行URL编码。把它放在你的
fetch(…)
方法中:
address=address.replace(“ü”),%C3%BC”)我回头看了看,意识到我正在向上投射一个输入流到一个对象中。我勒个去。我想我还在实习