Android无法连接HttpURLConnection以获取Bitmap

时间:2015-03-29 00:40:14

标签: android image bitmap httpurlconnection

我正在尝试从URL获取位图。我使用的方法是:

public static Bitmap getBitmapFromURL(String src) {
    try {

            URL url = new URL(src);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            return myBitmap;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

但我无法通过这一行:“connection.connect();”。 我错过了吗?我该如何连接()?

我的字符串src =“http://i.imgur.com/77H07kP.png

我读到我应该“这应该在AsyncTask派生类中使用。”。 怎么做?

2 个答案:

答案 0 :(得分:0)

提供有关您获得的错误的更多信息。此外,它可能听起来很愚蠢,但是,您是否在清单文件中设置了网络权限?

答案 1 :(得分:0)

尝试这样: URL imageUrl = new URL(url); Bitmap img = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream()); 还要确保你有 您的清单中设置了<uses-permission android:name="android.permission.INTERNET" />权限。 AsyncTask检索图像的示例如下:

public class RetrieveImageAsync extends AsyncTask<Void, Void, Bitmap>
{

private String url;

public RetrieveImageAsync(String imageUrl)
{
    this.url = imageUrl;
}

@Override
protected Bitmap doInBackground(Void... params)
{
    Bitmap retVal = null;
    try
    {
        URL imageUrl = new URL(url);
        return BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());
    }
    catch (Exception ex)
    {
    }
    return retVal;
}

@Override
protected void onPostExecute(Bitmap result)
{
    try
    {
        //Do something with the result Bitmap
    }
    catch (Exception e)
    {
    }
}

@Override
protected void onPreExecute() {}

@Override
protected void onProgressUpdate(Void... values) {}
}

然后您可以将其初始化为:new RetrieveImageAsync("http://i.imgur.com/77H07kP.png").execute();