java - JSONObject 没有按应有的方式进行编码?

标签 java php android android-studio

这是服务器端代码

<?php
require('connection.php');
require('functions.php');

$inputJSON = file_get_contents('php://input');
$aReuestData = json_decode( $inputJSON, TRUE ); //convert JSON into array

 $user_email = $aReuestData['user_email'];
 $user_password = $aReuestData['user_password'];
  $user_uniq = $aReuestData['user_uniq_id'];

if((($user_password !='') && ($user_email !=''))|| ($user_uniq!=''))
{
    $uname = $user_email;
    $pword = $user_password;
    $format ='json';    
    if(($user_password !='') && ($user_email !='')){
    echo $checkUser = checkLogin($uname,$pword);
    }
    else{
        $checkUser = checkLoginFacebook($user_uniq);
    }
    //print_r($checkUser);
    if($checkUser['id'] > 0)
    {
        $result = $checkUser; 
    }else{
        $result = "false";
    }
}else{

    $result = "Enter username and password";

}

$records = array("result"=> $result); 

echo $_REQUEST['jsoncallback'].  json_encode($records);

?>

我的登录 Activity 代码是

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.Cache;
import com.android.volley.Network;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.BasicNetwork;
import com.android.volley.toolbox.DiskBasedCache;
import com.android.volley.toolbox.HurlStack;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class Login extends MainActivity {
    //private Button button;
    //private TextView welcome;
    //private EditText username;
    //private EditText password;
    //private JSONObject jsonObject;
    private RequestQueue requestQueue;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        Cache cache = new DiskBasedCache(getCacheDir(),1024 * 1024);
        Network network = new BasicNetwork(new HurlStack());
        requestQueue= new RequestQueue(cache,network);
        final TextView send = (TextView)findViewById(R.id.send);
        final TextView hello = (TextView)findViewById(R.id.mess);
        EditText username = (EditText)findViewById(R.id.edituser);
        EditText password = (EditText)findViewById(R.id.editpass);
        Button button = (Button)findViewById(R.id.signin);
        final JSONObject jsonObject = new JSONObject();

        try {
           // jsonObject.put("Content-Type: ","application-json");
            jsonObject.put("user_email",username.getText().toString().trim());
            jsonObject.put("user_password",password.getText().toString().trim());
        } catch (JSONException e) {
            e.printStackTrace();
        }
        final HashMap<String,String> params = new HashMap<String, String>();
        params.put("user_email",username.getText().toString().trim());
        params.put("user_password",password.getText().toString().trim());
        String json = "{\"user_email\":\"ankur@gmail.com\",\"user_password\":\"123456\"} ";
        JSONObject json1 = new JSONObject();
        try {
            json1 = new JSONObject(json);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        requestQueue.start();
        final String url = "http://demo4u.org/leaveapp/ws/login.php";
        send.setText(json1.toString());
        final JSONObject finalJson = json1;
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(ApiMethods.login, finalJson,
                        new Response.Listener<JSONObject>() {
                            @Override
                            public void onResponse(JSONObject response) {
                                Toast.makeText(Login.this,"Passed",Toast.LENGTH_LONG).show();
                                hello.setText(response.toString());
                                Toast.makeText(Login.this,jsonObject.toString(),Toast.LENGTH_LONG).show();

                            }
                        }, new Response.ErrorListener() {
                   @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(Login.this,"Error",Toast.LENGTH_LONG).show();
                    }
                }

                ){
                        @Override
                        public Map<String,String> getHeaders(){
                        HashMap<String,String> headers = new HashMap<>();
                        headers.put("Accept", "application/json");
                        headers.put("Content-Type","application/json");
                        return headers;

                    }

                };
                requestQueue.add(jsonObjectRequest);
            }
        });





        }



    }

我得到的唯一返回是

$result = "Enter username and password";

我做错了什么? 我要包含 JSON header 还是其他东西???

请在详细 View 中回复,因为我是 android 新手......

输入的是

{"user_email":"ankur@gmail.com","user_password":"123456"}

服务器响应将是

Array{"result":{"id":"1","name":"ankur","email":"ankur@gmail.com","address":"b-block","designation":"devloper","department":"development","balanceleave":"5"}}

登录 php 服务器是:http://demo4u.org/leaveapp/ws/login.php

最佳答案

尝试通过覆盖 JsonObjectRequest 中的 getHeaders() 方法来设置 header

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(...your arguments here) {
                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    Map<String, String> headerParameters = new HashMap<>();
                    headerParameters.put("Accept", "application/json");
                    headerParameters.put("Content-Type", "application/json");
                    return headerParameters;
                }
            };

关于java - JSONObject 没有按应有的方式进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44469939/

相关文章:

java.lang.SecurityException : Need BLUETOOTH permission: Neither user 10065 nor current process has android. 权限.BLUETOOTH

java - Spring Security - 注销和访问控制不起作用

java - Java中的简单动画

java - 读取由 unicode 字符终止的文件

java - 正则表达式,逐字符读取(java)

php - Laravel 5 - Eloquent 关系返回空

php - Canvas 的 Facebook getLoginUrl

php - Laravel 5 : organised models in subdirectory not found

android - 如何在 Android 的 Mediaplayer 中显示编码的视频文件?

android - 在 Android 版谷歌地图中查找最近的位置