是否可以使用 Volley 发送 JSON 对象而不是 HASH MAP <String, String>?

Is it possible to send JSON Object instead of HASH MAP <String, String> using Volley?

我可以 POST Map <String, String> 我的服务器,但它以 & 分隔形式出现。

我使用了来自 Send post request using Volley and receive in PHP

的代码

getParams() 不适用于 JSONObject return 类型。是否可以仅将 JSONObject 作为 JSON 发送?

我想以 JSON 的形式发送数据,我将使用 file_get_contents(php://input) 获取数据。 为此,我将 Content-Type 更改为 application/json; charset=utf-8

问题是使用这种方式我得到 x=abc&y=def 格式的数据,因为它是 Map<String, String> 类型,我想要 JSON {"x":"abc", "y":"def"}[=26] 格式的数据=]

这与上面的问题不同,因为我想 POST JSON 中的数据仅 而不是 MAP of String

试试这个:

private void jsonObjReq() {

        showProcessDialog();
        Map<String, String> postParam= new HashMap<String, String>();
        postParam.put("un", "xyz@gmail.com");
        postParam.put("p", "somepasswordhere");



JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
        Const.URL_LOGIN, new JsonObject(postParam),
        new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());
                msgResponse.setText(response.toString());
                hideProgressDialog();
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hideProgressDialog();
            }
        }) {

    /**
     * Passing some request headers
     * */
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("Content-Type", "application/json; charset=utf-8");
        return headers;
    }



};

change header in your php too.

简单的方法是这样

final RequestQueue requestQueue = Volley.newRequestQueue(this);
final String url ="http://mykulwstc000006.kul/Services/Customer/Register";
Map<String, String>  params = new HashMap<String, String>();
params.put("MobileNumber", "+97333765439");
params.put("EmailAddress", "danish.hussain4@das.com");
params.put("FirstName", "Danish2");
params.put("LastName", "Hussain2");
params.put("Country", "BH");
params.put("Language", "EN");
JsonObjectRequest req = new JsonObjectRequest(url, new JSONObject(params),
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    VolleyLog.v("Response:%n %s", response.toString(4));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        VolleyLog.e("Error: ", error.getMessage());
    }
}){
    @Override
    public String getBodyContentType() {
        return "application/json; charset=utf-8";
    }

    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        String username ="eli@gmail.com";
        String password = "elie73";

        String auth =new String(username + ":" + password);
        byte[] data = auth.getBytes();
        String base64 = Base64.encodeToString(data, Base64.NO_WRAP);
        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("Authorization","Basic "+base64);
        return headers;
    }

};
requestQueue.add(req);

}