Я пытался получить ответ, но ответ отображается в 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);
}
В веб-браузере показан ответ php json:
{«status»: true, «message»: «user is login.»}
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.'
));
}
}
Проверьте, отправляются ли параметры POST в запросе, если вы не получаете никакого ответа, возможно, файл PHP получает ошибку, и у вас error_reporting (0) и отображается пустая страница, попробуйте error_reporting (E_ALL) в файл php.
Вы пытаетесь использовать
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();
}
кажется, что у веб-ответа есть некоторая проблема с кодировкой