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

时间:2019-07-06 14:36:14

标签: java android json

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

更新 ::我正在使用byethost服务,并且我了解其中包含cookie。那么我如何使用排球库解决这个问题呢?

在我的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。

1 个答案:

答案 0 :(得分:0)

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

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