首页 > 解决方案 > 尝试将用户签名到服务器主机时如何解决“字符串无法转换为 json 对象”错误?

问题描述

我正在尝试将一些用户数据(其注册 android 页面)发送到我的服务器主机,但是在尝试从服务器端获取 json 对象时出现错误,那么我该如何解决这个问题?

更新:: 我正在使用 byethost 服务,我知道 cookie 有一些东西。那么我该如何使用 volley 库来解决这个问题呢?

我的 RegisterActivity 类中有一个名为 onResponse() 的方法,它是问题开始的地方。在这种方法中,我写了这一行,它总是抛出关于不将字符串转换为 json 对象的异常,我认为这与我的 java 代码无关,我猜它无法将字符串转换为 json 的原因是它不是有效的 json 对象。但我不知道为什么它无效。

这是我的 register.php 文件 https://www.androidtutorialpoint.com/wp-content/uploads/2016/09/register.txt https://www.androidtutorialpoint.com/wp-content/uploads/2016/09/ update_user_info.txt https://www.androidtutorialpoint.com/wp-content/uploads/2016/09/android_login_connect.txt https://www.androidtutorialpoint.com/wp-content/uploads/2016/09/android_login_config.txt

顺便说一句,我只是遵循了一个教程,我对 php 不太了解。

这是我的 RegisterActivity 类中触发异常的方法。

            @Override
            public void onResponse(String response) {

            Toast.makeText(RegisterActivity.this, response, 
            Toast.LENGTH_LONG).show();

            Log.d(TAG, "Register Response: " + response.toString());
            hideDialog();

            try {
                JSONObject jObj = new JSONObject(response);
                boolean error = jObj.getBoolean("error");

                if (!error) {
                    String user = 
                    jObj.getJSONObject("user").getString("name");
                    Toast.makeText(getApplicationContext(), "Hi " + user + 
                     ", You are successfully Added!", 
                    Toast.LENGTH_SHORT).show();

                    // Launch login activity
                    Intent intent = new Intent(
                            RegisterActivity.this,
                            LoginActivity.class);
                    startActivity(intent);
                    finish();
                } else {

                    String errorMsg = jObj.getString("error_msg");
                    Toast.makeText(getApplicationContext(),
                            errorMsg, Toast.LENGTH_LONG).show();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

我希望有一个有效的 json 对象来将用户数据传递到我的服务器,但我已经拥有的是一些引发异常的无效 json。

标签: javaandroidjson

解决方案


好吧,如果有人遵循了注册和登录页面的教程,但它在这里不起作用是一些原因。1)你的php文件有问题,主要是这个。2) 如果将字符串转换为 json 对象有问题,请打印字符串并查看它是否是有效的 json。3)如果这些东西一切正常,可能你应该检查数据库,看看是否一切都适合 php 和用户数据等。

我的问题不是这些,因为事实证明我的服务器主机与cookies(byethost)有关,你应该添加一些标题来解决这个问题这里是一个很好的链接 How to set custom header in Volley Request 但我刚刚解决了我的问题是使用另一个服务器主机(000host),它工作得很好。顺便说一句,如果您尝试使用 wamp 并且它也不起作用,请使用免费的 000host。我被困在这件事上已经三天了。祝你好运


推荐阅读