Java - 获取 JSONObject 时出现 NullPointerException

2023-12-12

我正在尝试使用以下方法在我的 Android 应用程序中实现登录功能卢肯代码的 RestClient 类。我有一个名为UserFunctions通过 RestClient 检索 JSONObject:

public class UserFunctions {

    private RestClient restClient;
    private String json;
    private Context mContext;

    private static String login_tag = "login";
    private static String register_tag = "register";

    // constructor
    public UserFunctions(Context context){
        restClient = new RestClient("http://10.0.2.2:81/HGourmet/user");
        mContext = context;
    }

    /**
     * function make Login Request
     * @param email
     * @param password
     * */
   public JSONObject loginUser(String email, String password){
        // Building Parameters      
        restClient.AddParam("tag", login_tag);
        restClient.AddParam("email", email);
        restClient.AddParam("password", password);

        // getting JSON Object
        try{
    restClient.Execute(RequestMethod.POST);
    }catch(Exception e){
        e.printStackTrace();
    }               
    json = restClient.getResponse();

        JSONObject jObj = null;
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }
        return jObj;
    }

以下是我在 logcat 中得到的内容:

01-06 09:01:05.805: E/Trace(1819): error opening trace file: No such file or directory (2)
01-06 09:02:05.485: E/AndroidRuntime(1819): FATAL EXCEPTION: main
01-06 09:02:05.485: E/AndroidRuntime(1819): java.lang.NullPointerException
01-06 09:02:05.485: E/AndroidRuntime(1819):     at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at org.json.JSONTokener.nextValue(JSONTokener.java:94)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at org.json.JSONObject.<init>(JSONObject.java:154)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at org.json.JSONObject.<init>(JSONObject.java:171)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at com.hanu.hgourmet.library.UserFunctions.loginUser(UserFunctions.java:49)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at com.hanu.hgourmet.LoginActivity$1.onClick(LoginActivity.java:56)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at android.view.View.performClick(View.java:4202)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at android.view.View$PerformClick.run(View.java:17340)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at android.os.Handler.handleCallback(Handler.java:725)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at android.os.Looper.loop(Looper.java:137)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at android.app.ActivityThread.main(ActivityThread.java:5039)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at java.lang.reflect.Method.invokeNative(Native Method)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at java.lang.reflect.Method.invoke(Method.java:511)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-06 09:02:05.485: E/AndroidRuntime(1819):     at dalvik.system.NativeStart.main(Native Method)

我真的希望有人能帮助我找出这个问题的原因。非常感谢。


我不会详细说明您应该如何执行此操作,而只会详细说明为什么会发生这种情况。根据定义,AsyncTask 是异步的。这意味着当您执行它时,它会在不同的线程中并行完成其工作。所以你不能指望它会在之后立即终止execute()已被调用(否则它将被称为SyncTask,并且没有任何理由存在)。

See AsyncTask作为烤面包机。当您启动烤面包机(执行 AsyncTask)时,它会烤面包,但不会立即返回烤好的面包。需要一些时间来烘烤它。当它烤面包时,您可以做其他事情(因此不会完全冻结 UI 线程)。当它烤完你的面包时,它会用一个通知你ding!面包已经烤好了。这里也是同样的事情。你应该只开始使用json(烤面包),当 AsyncTask 通知您它已完成执行时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java - 获取 JSONObject 时出现 NullPointerException 的相关文章

  • eglCodecCommon:setVertexArrayObject:设置vao调试消息

    我的 Android Emulator API 28 logcat 被这样的消息搞得晕头转向 D eglCodecCommon setVertexArrayObject set vao to 1 1 0 0 D eglCodecCommon
  • 是否可以手动检查 LocateRegistry 是否存在?

    I 已经发现 https stackoverflow com a 8338852 897090一种安全的方式获得LocateRegistry 即使注册表尚不存在 Registry registry null try registry Loc
  • Android:外部存储上的 mkdirs()/mkdir() 返回 false

    我对此感到疯狂 Log d STATE Environment getExternalStorageState File f new File Environment getExternalStoragePublicDirectory En
  • 返回视图作为 JSON 对象的一部分

    我有一个应用程序只加载一次完整视图 我这样做的原因并不重要 重要的是 其余内容只会以部分视图的形式返回 除了一些内容之外 我还有一些 JSON 对象 我想通过每个 AJAX 请求在服务器之间来回传递 有没有办法返回一个 JSON 对象 并将
  • Android - 在图像/缩略图上覆盖播放按钮的最佳方式

    我有一个 Android 应用程序 可以播放音频 视频并显示图片 对于视频 我想在预览图像顶部以及列表视图中叠加一个播放按钮 现在我的做法是使用 xml 中的 ImageView 然后可绘制对象是一个图层图层列表 我以编程方式定义它 因为其
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • Android 应用程序不需要任何特殊访问权限

    当我开始安装时myapp apk 我得到下面的屏幕 我的应用程序需要位置 外部存储权限 上述权限应该根据需要向用户请求 即在需要这些权限的代码之前 现在 当安装应用程序时 我会看到一个屏幕 上面显示应用程序不需要任何特殊访问权限 如下图所示
  • 由于 json 字符串化 dict 键导致数据丢失

    考虑下面的例子 gt gt gt import json gt gt gt d 0 potato 0 spud gt gt gt json dumps d 0 potato 0 spud gt gt gt json loads json d
  • Android Lollipop 中应用程序外部配置文件和内部配置文件之间的数据传输

    相关问题安卓工作版 我的应用程序是一个设备管理员特权应用程序 现在我修改了创建托管工作配置文件并将其自身设置为配置文件所有者的代码 问题是 如果我upgrade我的应用程序 它成为设备管理员的配置文件所有者 现在将会有两份我的应用程序 一个
  • 以编程方式创建 FloatingActionButton(无需 xml)

    我很欣赏 Android 的 FloatingActionButton fab 功能 并希望在我的项目中的许多不同地方使用它们 现在 我有这样的东西 我有几个 xml 规范 除了 id 图标和 onclick 之外 所有这些规范都是相同的
  • 使用 Swagger 的 Spring REST API 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以帮助我生成 RESTful API 文档的工具 我的服务器是用Java编写的并使用S
  • Android 中的 ODEX 文件是什么?

    经过一些android安装了应用程序 我发现它会变成odex文件 不是apk 在智 能手机中 这是怎么发生的 谁能教教我 我对此很感兴趣 博客文章 https stackoverflow com a 9593590 194894大部分是正确
  • 为什么 java.util.Arraylist#clear 按照 OpenJDK 中的方式实现?

    http grepcode com file repository grepcode com java root jdk openjdk 6 b14 java util ArrayList java 473 http grepcode co
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • 无法使用 Zxing Android 扫描 Code 128

    我已将 ZXing 条码阅读器集成到我的 Android 应用程序中 它可以扫描大部分代码 但我有一张电费单 它无法扫描 使用 Galaxy Ace 5 0MP 我认为问题是由于相机分辨率和焦点造成的 因为当我使用 Xperia SL 12
  • 通过 Google 帐户从 Google Play 安装的应用程序列表

    以下是我的问题 是否可以通过使用任何 api 以编程方式通过 Google Play 获取用户已安装的应用程序列表 请注意 我并不是询问设备中当前安装的应用程序列表 而是询问在某个时刻已安装的应用程序列表 我需要解决上述问题 因为我正在考虑
  • Android:是否可以在可绘制选择器中使用字符串/枚举?

    问题 Q1 有人设法让自定义字符串 枚举属性在 xml 选择器中工作吗 我通过以下 1 获得了一个布尔属性 但不是字符串属性 编辑 感谢您的回答 目前 android 仅支持布尔选择器 原因请参阅已接受的答案 我计划实现一个复杂的自定义按钮
  • Dart/Flutter 如何编译到 Android?

    我找不到任何具体的资源 Dart 是否被编译到 JVM 或者 Google 的团队是否编译了 Dart VM 以在 JVM 上运行 然后在 JVM 内的 Dart VM 中运行 Dart 前者更有意义 并且符合 无桥 的口号 但后者似乎更符
  • 检查按钮是否可用?如果没有,请等待 5 秒钟,然后再次检查?

    基本上我想看看此刻是否可以单击按钮 如果没有我想再试一次 所以我需要某种 goto 函数来返回到代码的前一行 尽管我怀疑我写得非常糟糕 但它本来可以做得更容易 try driver findElement By xpath button i
  • 如何在J2ME中获取数字的幂[重复]

    这个问题在这里已经有答案了 可能的重复 J2ME power double double 数学函数实现 https stackoverflow com questions 2076913 j2me powerdouble double ma

随机推荐

  • 如何在 Android 上的 MapView 中添加地图比例尺?

    我正在努力添加一个地图比例 根据当前的缩放级别在屏幕上显示当前的长度 我有一种感觉 它可能存在一些预定义的类可供使用 但我不知道 我已经搜索了很多但找不到任何东西 我非常感谢任何帮助 Alex 好吧 我现在明白了 Luis 的回答对我帮助很
  • 如何将值传递给构造函数?

    很抱歉我的问题有点理论化 我是 OOP 新手 正在研究以下代码 public interface IShape double getArea public class Rectangle IShape int lenght int widt
  • 如何从已经有 main 的 gradle 项目中运行 Kotlin 脚本?

    我有 Ktor 项目 其主要名称为Application kt 布局是这样的 com myProject Application kt Testing kt api Routes kt routes NewRoutes kt OpenApi
  • Boost ASIO HTTP 客户端 POST

    我正在尝试让 boost ASIO 库发送帖子 但变量从未发送到服务器 我知道服务器工作正常 用curl测试 此代码不起作用 变量 msg 未发布到服务器 但当我使用curl 时它确实起作用 tcp resolver resolver io
  • 在外部区域达到阈值后允许 BottomSheet 向上滑动

    我正在尝试复制当前 Google 地图的行为 该行为允许从底部栏向上滑动时显示底部工作表 请注意 在下面的录音中 我首先点击底部栏上的一个按钮 然后向上滑动 这又会显示其后面的工作表 我找不到任何地方解释如何实现这样的事情 我尝试探索 Bo
  • Android sha512 示例

    有人可以提供一个关于如何使用 java android 哈希密码的示例吗PW HASH ITERATION COUNTsha512 salt 的迭代 在伪代码中 hash sha512 concat pw salt for i 1 i
  • 在 django-apps 中查找静态文件和模板的顺序

    例如 我的 django 项目中有 2 个应用程序 它们的模板和静态文件具有相同的子路径 app1 static style css templates index html app2 static style css templates
  • Dymola 标志列表

    Dymola 中的一些设置可以通过在 命令 窗口中设置标志来更改 标志的一些示例是 Advanced AutoFormatting Advanced PedanticModelica Advanced LogStartValuesForIt
  • 以编程方式将 RDLC 报告另存为 PDF

    我有一份报告需要运行多次并保存为 PDF 我目前正在以编程方式生成 PDF 格式的报告 但希望保存报告 而无需用户每次都手动选择保存选项 我用来将单个报告呈现为 PDF 的代码是 Dim warnings As Microsoft Repo
  • Flink:行时间属性不得位于常规联接的输入行中

    使用 flink SQL API 我想将多个表连接在一起并在时间窗口内进行一些计算 我有 3 个来自 CSV 文件的表 一个来自 Kafka 在卡夫卡表中 我有一个字段timestampMs 我想将其用于我的时间窗口操作 为此 我执行了以下
  • 合并树节点

    有谁知道一种按以下方式合并树节点的算法 treeA child a node abc child b node xyz treeB child a node qrs child b node xyz node pdq child c nod
  • 多个访问者可以共享同一个IP地址吗?

    是否有可能两个设备同时访问我的网站时存在重复的 IP 地址 这就是我获取IP地址的方法 SERVER REMOTE ADDR 是的 如果它们位于执行 NAT 的防火墙后面 则所有连接可能来自多个客户端 但似乎源自同一 IP 地址
  • Android 使用 HttpPost/HttpGet 发送照片

    我需要将存储在 SDCARD 中的文件中的照片发送到外部 Api 为了做到这一点 我使用以下代码 String responseStr null this setMethod request this setParameters tags
  • 子查询在mysql中返回多于1行

    我正在执行以下查询并收到错误 子查询返回超过 1 行 我的查询是 SELECT pkTicketID TicketReplyDateAdded TIMESTAMPDIFF DAY TicketReplyDateAdded now as Nu
  • 最大限度地提高 Google Play 服务的向后兼容性

    在依赖 Google Play 服务的同时保持 Android 应用程序最广泛的向后兼容性的建议做法是什么 使用 Android Studio 的开发人员实现文档表明针对 v5 进行编译compile com google android
  • SQL脚本中的Week()函数

    我正在使用 sql server 2005 我只是想知道我们是否可以获取特定月份的周数 例子Date 2008 10 16 有什么我们可以拥有的吗SELECT WEEK Date 或者有什么更好的建议 select datepart dd
  • 从 Databricks Notebook 发送带有附件的电子邮件

    我是 Python 和 Spark 世界的新手 我正在尝试构建一个 pyspark 代码 以从 Databricks 发送电子邮件以及来自安装点位置的附件 我使用下面的代码来实现相同的 import smtplib from pathlib
  • MATLAB 中的拉盖尔多项式

    我尝试在 MATLAB 中使用 命令生成拉盖尔多项式 但每次都会收到此错误 I found this in the help section 既然我已经定义了x作为象征性的我不应该得到这个错误 Also on website I found
  • 如何在openssl中启用EVP功能?

    我正在尝试使用 heartbleed 补丁 1 0 1g 将我的网络服务器更新到最新的 openssl 我从 openssl org 获取了 tarball 平常说的 configure make make install 不得不说conf
  • Java - 获取 JSONObject 时出现 NullPointerException

    我正在尝试使用以下方法在我的 Android 应用程序中实现登录功能卢肯代码的 RestClient 类 我有一个名为UserFunctions通过 RestClient 检索 JSONObject public class UserFun