java - getInputstream 上的 NullPointerException

标签 java android nullpointerexception inputstream urlconnection

你知道为什么我在调用 getInputStream() 函数时会捕获 NullPointerException 吗?

我记录了 URLConnection 的日志,链接是正确的...我不知道问题出在哪里。

public Bitmap getBitmap(String resolution) {
    URL url = null;
    Bitmap bmp = null;

    switch(resolution) {
        case "thumb":
            url = thumbUrl;
            break;

        case "low":
            url = lowresUrl;
            break;

        case "standard":
            url = standardresUrl;
            break;
    }

    try {

        URLConnection conn = url.openConnection();

        InputStream in = conn.getInputStream();

        bmp = BitmapFactory.decodeStream(in);

        in.close();

    }
    catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();
    }

    return bmp;
}

最佳答案

鉴于您发布的代码,唯一合理的结论是 connnull。您可以使用 conditional operator ? : 检查这一点。 (三元)如

// InputStream in = conn.getInputStream();
InputStream in = (conn != null) ? conn.getInputStream() : null;

或者类似的东西

InputStream in = null;
if (conn != null) { 
    in = conn.getInputStream();
}

我还注意到您的 switch 没有 default:,因此 url 也可能是 null (但如果是这种情况,您会在 openConnection() 上得到一个 Exception)。

关于java - getInputstream 上的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28246475/

相关文章:

java - 如何在 Android 天气应用 API 调用中更改城市?

java - 一个应用程序(可执行 jar)是否需要权限来监听 centos 上的端口?

java - 在eclipse插件开发中添加或删除项目中的库

android - 如何创建可滚动的布局

Android 数据绑定(bind)编译警告 : Method references using '.' is deprecated

java - 不调用 Spring REST API Controller

java - 在 Android Studio 项目中使用 OSMDroid 时 OMSDroid.MapView NoClassDefFound

java - 什么是 NullPointerException,我该如何解决?

java - NULL 上的方法调用工作正常 - 期待 NPE

android - Android中的抽屉导航空指针异常