php - Volley : How to extract JSONObject from String Response? 这可能吗?

标签 php android json android-volley

我花了几天时间来弄清楚 volley,并最终找到了使用 Method.POST 的方法。我正在使用 StringRequest 将 email_address 参数传递给我的 PHP。现在它返回一个 JSON 字符串:

    {"user_id":1,"email_address":"adminuser"}

但是,我无法使用普通的 getString() 方法提取数据。它给了我“没有值(value)”的错误。这是我的代码。只是它的摘录:

    // Login button
    btnLogin = (Button) findViewById(R.id.btnLogin);


    // Login button click event
    btnLogin.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            String param = txtUsername.getText().toString();
            postData(param);
        }
    });     

} 

/**
 * Posting parameter
 * */
private void postData(final String param) {

    // Get username, password from EditText
    String username = txtUsername.getText().toString();
    String password = txtPassword.getText().toString();

    // Check if username, password is filled
    if(username.trim().length() > 0 && password.trim().length() > 0){
        if(username.equals("adminuser") && password.equals("test")){
            RequestQueue rq = Volley.newRequestQueue(this);

            StringRequest postReq = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {
                    Log.d(TAG, response.toString());

                    try {

                        JSONObject person = new JSONObject();
                        String name = person.getString("user_id");
                        String email = person.getString("email_address");

                        //Store session
                        session.createLoginSession(name, email);

                        // Staring MainActivity
                        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                        startActivity(intent);
                        finish();
                        //}

                    } catch (JSONException e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();              
                    }

                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();


                }

            })  {

                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String, String> params = new HashMap<String, String>();
                    params.put("email_address", param);
                    return params;
                }


            };

            rq.add(postReq);

        }
    }

}

我觉得这是因为响应以字符串形式返回(我可能错了)。但是我尝试过使用自定义请求 gson,但是无论我使用 post 方法做什么都不起作用。 StringRequest 是唯一实际返回内容的方法,但现在,我无法从中提取数据。我想将数据存储在 session 中。

如果有人能提供帮助,那就太好了,因为我已经用谷歌搜索并尝试了我能找到的任何解决方案,但都无济于事。谢谢!

最佳答案

            @Override
            public void onResponse(String response) {
                Log.d(TAG, response.toString());

                try {
                    //Do it with this it will work
                    JSONObject person = new JSONObject(response);
                    String name = person.getString("user_id");
                    String email = person.getString("email_address");

                    //Store session
                    session.createLoginSession(name, email);

                    // Staring MainActivity
                    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                    startActivity(intent);
                    finish();
                    //}

                } catch (JSONException e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();              
                }

            }

关于php - Volley : How to extract JSONObject from String Response? 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27717121/

相关文章:

php - 使用 Zend_Db_Select 选择 '0' AS 变量 ...

php - Ubuntu Apache PHP - 创建和写入 Excel 文档

Android SIP 库 VS pjsip : which one?

android - 如何告诉我的自定义 FragmentPagerAdapter 停止销毁我的 Fragment?

mysql - 如何在 MySQL 中搜索嵌套的 JSON

php - 从表单操作PHP和/或MySql创建多个选择?

php - 使用 laravel 编辑个人资料页面

android - 谁能给我示例 Android 中根据 "Supporting Multiple Screens"的按钮和 TextView ?

javascript - 如何使用 javascript 或 jquery 或 angularjs 将表单输入按钮保存到 json 文件中?

Java Mongodb 更新数据库对象