【问题标题】:JSONObject isn't encoding like it should be?JSONObject 没有像它应该的那样编码?
【发布时间】:2017-06-10 05:34:40
【问题描述】:

这是服务器端代码

<?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);

?>

我的登录活动代码是

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 标头还是什么???

由于我是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

【问题讨论】:

  • 我需要你展示你的技能,直到你能解决这个问题..快10天了,我无法解决这个问题..
  • 您是否尝试过直接访问 POST 值? $_POST['user_email']
  • php 代码由公司提供,所以我不能编辑它,顺便说一句,PHP 代码很好,因为我已经通过 REST Client API 测试了它
  • 你得到了所需的输出ji...
  • 不,我没有 Srini5123

标签: java php android android-studio


【解决方案1】:

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

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;
                }
            };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2021-11-25
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多