如何使用 volley 库用 header 发送 json 数据

How to send json data with header using volley library

我正在尝试按以下格式将 json 数据发送到 url。

      {
        “amount”:500,
        “merchant_id”:”104”,
        “narrative”:”John”,
        “reference”:”Steven”
      }

要发送数据到url,需要一个授权密钥作为header,我已经想出了如何在Params中将授权密钥设置为header,如下图

  @Override
  public Map<String,String >getHeaders()throws AuthFailureError{
  Map<String,String >params=new HashMap<String,String>();
  params.put(“Content-Type”, “text/jsom;);
  params.put(“AuthKey”, Auth);
  return params;

但我不知道如何使用 params with volley 将第一个实例中显示的特定格式的数据发送到 url。请帮忙,我对使用 Volley library 很陌生。 这是我目前正在使用的其余代码,但除了无效的 json 错误外,没有 return 任何响应。这意味着发送的格式与所需格式不符。

   StringRequest stringRequest=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
     @Override
     public void onResponse(String response) {


         Toast.makeText(Main9Activity.this, response, Toast.LENGTH_LONG).show();

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



     @Override
     protected Map<String, String> getParams() {
         HashMap<String, String> params = new HashMap<String, String>();
         params.put("amount","500");
         params.put("merchant_id", "104");

         params.put("narrative","John");
         params.put("reference", "Steven");



         return params;
     }
     @Override public Map<String,String>getHeaders()throws AuthFailureError{
         Map<String,String>headers=new HashMap<>();
         params.put("Content-Type","text/json");
         params.put("Authorization",Auth);
         return params;
     }
 };
RequestQueue requestQueue=Volley.newRequestQueue(this);
requestQueue.add(stringRequest);

您可以参考下面的代码片段以在排球中使用自定义 header 的 post 数据。

JSONObject jsonobject = new JSONObject();

jsonobject.put("amount", "500");
jsonobject.put("merchant_id", "104");
jsonobject.put("narrative", "John");
jsonobject.put("reference", "Steven");

  JsonObjectRequest jsonObjReq = new JsonObjectRequest(
    Request.Method.POST,url, jsonobject,
    new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            Log.d(TAG, response.toString());
            Toast.makeText(Main9Activity.this, response.toString(), Toast.LENGTH_SHORT).show();

            hideProgressDialog();
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            Toast.makeText(Main9Activity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
            hideProgressDialog();
        }
    }) {

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

您可以发送如下:

您要发送的数据:

    Hashmap<String, Object> data = new HashMap<>();
    data.put("amount", "500");
    data.put("merchant_id", "104");
    data.put("narrative", "John");
    data.put("reference", "Steven");

RequestQueue 请求 = Volley.newRequestQueue(上下文);

    JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST, "your url",new JSONObject(data),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }
    ){

    };
    request.add(jsonobj);