排球响应字符串不起作用

时间:2014-09-18 18:46:07

标签: php android regex

我试图获得响应,但响应显示在public void onResponse(String response)响应变量中。当我从jsonobject解析变量时,没有显示任何内容。

private void requestData(String uri){

    user = username.getText().toString();
     pass = password.getText().toString();

     RequestQueue queue = Volley.newRequestQueue(this);

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

                @Override
                public void onResponse(String response) {
                    pb.setVisibility(View.INVISIBLE);

                    try {

                        JSONObject obj = new JSONObject(response);
                        JSONObject data = obj.getJSONObject("status");

                        Toast.makeText(MainActivity.this, data.toString(), Toast.LENGTH_LONG).show();

                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }               

                }
            },
            new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError ex) {
                    pb.setVisibility(View.INVISIBLE);
                    Toast.makeText(MainActivity.this, ex.toString()+"error", Toast.LENGTH_LONG).show();
                }

            }){
                @Override
                protected Map<String,String> getParams(){
                Map<String,String> params = new HashMap<String, String>();
                params.put("User_Name", user);  
                params.put("Password", pass);

                return params;
        }
    };

        queue.add(myReq);       
}

在Web浏览器中,php json响应显示:

{“status”:true,“message”:“用户登录。”}

php代码是:

function logedin_post(){

    $username = $this->input->post('User_Name');
    $password = $this->input->post('Password');
    $check_username = $this->validate_username($username);
    if($check_username==TRUE){
        $check_password = $this->validate_password($password,$username);
        if($check_password==TRUE){              
            $row = $this->common_model->getRecord('*','users','User_Name',$username)->result_array();               
            $sess_array = array(
                'User_ID'=>$row[0]['User_ID'],
                'User_Name'=>$row[0]['User_Name'],
                'User_Role'=>$row[0]['User_Role'],

            );      
            $this->session->set_userdata('admin_logged_in', $sess_array);
            $this->response(array(
                'status'=>true,
                'message'=>'user are login.'
                ));
        }else{

                            $this->response(array(
                'status'=>false,
                'message'=>'Please enter your correct Password.'
                ));
        }
    }else{

                    $this->response(array(
                'status'=>false,
                'message'=>'Please enter your correct Username.'
                ));
    }
}

2 个答案:

答案 0 :(得分:0)

检查请求中是否正在发送POST参数,如果你没有得到任何响应,可能是PHP文件出错并且你有error_reporting(0)并显示空白页面,试试error_reporting (E_ALL)进入php文件。

答案 1 :(得分:0)

您是否尝试使用

 try {

    JSONObject obj = new JSONObject(response);
    JSONObject data = obj.getBoolean("status");

    Toast.makeText(MainActivity.this, data.toString(), Toast.LENGTH_LONG).show();

} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}  

似乎网络响应有一些编码问题