【问题标题】:Getting a JSONException: end of input at character 0获取 JSONException:字符 0 处的输入结束
【发布时间】:2012-01-05 09:46:40
【问题描述】:

我在 php 中有一个 API,它以 JSON 格式发送数据。 我编写了以下代码,当我在 wifi 上时它工作正常。 但是当我在 3g 上想从 API 下载数据时,我收到以下异常: JSONException:在字符 0 处输入结束

我不知道为什么它可以在 wifi 上运行,但它不能在移动互联网上运行。 我的代码:

        JSONObject json = getJSONfromURL("http://api.myurl.com/users.json");

        JSONArray objects = json.getJSONArray("objects");
        db.setLockingEnabled(false);
        db.beginTransaction();

        for (int i = 0; i < objects.length(); i++) {
            JSONObject e = objects.getJSONObject(i);

            if(e.getString("UID") != "-1"){
                ContentValues values = new ContentValues();
                //DO DATABASE INSERT. REMOVED THIS CODE FOR READABILITY
                alldata_mProgressDialog.incrementProgressBy(1);
            }
        }

谁能帮帮我?

【问题讨论】:

  • API 位于何​​处?未连接到内部网络时是否可用?
  • 首先,检查您是否得到准确的响应。在控制台上打印您的 json 值。
  • @PareshMayani 同意,我认为 JSON 响应可能缺少某些内容。
  • @mkfinest:API 可以在线使用,它适用于每个 wifi 网络(也可以在家里)。 @PareshMayani:如果我得不到准确的回应,它在 wifi 中也不起作用?
  • @harmjanr 确保始终对您的回复进行空检查。如果我得到回应,我的思维定势应该很幸运,通过这种方法,您至少可以避免一些潜在的陷阱。

标签: android json


【解决方案1】:

您可能会收到空白回复。它不为空,但响应为空。所以你得到这个错误而不是 Nullpointer 异常

【讨论】:

  • 响应确实为空。但为什么?因为从服务器发送的数据很好,看起来我的移动互联网连接正在切断响应或什么的。因为,如前所述,它在 wifi 上运行良好。
  • 检查一些代理问题。网址是否暴露在互联网上?
  • 如何阻止错误?有没有办法检测它?谢谢
  • 网络问题显示出现此错误,请仔细检查您的网络连接
【解决方案2】:

检查您是否要求获得使用 Internet 的权限。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在 Android 清单中

通过Permissions overview @ https://developer.android.com查看其他人。

【讨论】:

    【解决方案3】:

    您可能会收到带有默认值的默认响应。当您没有正确发送请求或发送错误的参数时,就会出现这种错误。检查This

    【讨论】:

      【解决方案4】:

      有时这个错误是由于 json 编码函数要求所有传入的数据都是 UTF-8 编码的。

      尝试将mysqli_set_charset($con, 'utf8'); 添加到您的 php.ini 文件中。

      【讨论】:

        【解决方案5】:

        response为null时出现这种错误。在logcat中打印Json响应

        Log.e ( "response", "" + response ),或者你也可以在 postman 上查看响应。

        【讨论】:

          【解决方案6】:

          我在通过 USB 在 Android Studio 上调试 android 应用程序时遇到此错误。一台平板电脑的连接尝试失败,但我的常规测试平板电脑却没有。事实证明,失败是由于我没有在故障机器上启用 WIFI 设置。所以我在它上面启用了WIFI,它连接到服务器OK。

          【讨论】:

            猜你喜欢
            • 2014-08-09
            • 1970-01-01
            • 2015-11-13
            • 1970-01-01
            • 1970-01-01
            • 2017-08-17
            • 1970-01-01
            • 2016-06-13
            • 1970-01-01
            相关资源
            最近更新 更多