【问题标题】:Send token header in json object paramater Volley post在 json 对象参数 Volley post 中发送令牌头
【发布时间】:2019-03-19 18:59:13
【问题描述】:

我在 volley 中使用 post 方法。我搜索并发现getHeader()用于在请求中发送标头。解决方案是使用JSONObject request而不是字符串请求(我目前正在使用)但是有没有办法通过这种方法发送标头?因为在那种情况下,我将不得不修改许多类中的大量代码。对不起英语,我不是母语人士。 请求参数是一个 json 对象。我正在使用以下代码发送参数。

mRequestQueue = Volley.newRequestQueue(getContext());
    mStringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d("Response", "onResponse: " + response);

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i("This is the error", "Error :" + error.toString());
        }
    })
{
            @Override
            public String getBodyContentType() {
                return "application/json";
            }

            @Override
            public byte[] getBody()  throws AuthFailureError {
                HashMap<String, String> params2 = new HashMap<String, String>();
                params2.put("AssigneeId",userid);
                params2.put("IssueStatus", "5");
                return new JSONObject(params2).toString().getBytes();
            }
 };
        mRequestQueue.add(mStringRequest);

【问题讨论】:

  • 不,@VivekMishra 我今天早些时候回答了这个问题。它使用 'Map getHeaders() throws AuthFailureError' 而我使用 'public byte[] getBody() throws AuthFailureError' 正如问题中提到的,我知道有一种方法使用 jsonobject 数组而不是字符串请求。跨度>
  • @VivekMishra 请立即阅读问题。谢谢
  • getBody() 与 getHeaders() 方法有什么关系?

标签: android json post header android-volley


【解决方案1】:

此请求也有 StringRequest。请以这种方式使用getHeaders():

 public void requestWithSomeHttpHeaders() {
        RequestQueue queue = Volley.newRequestQueue(this);
        String url = "http://www.somewebsite.com";
        StringRequest getRequest = new StringRequest(Request.Method.GET, url, 
            new Response.Listener<String>() 
            {
                @Override
                public void onResponse(String response) {
                    // response
                    Log.d("Response", response);
                }
            }, 
            new Response.ErrorListener() 
            {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO Auto-generated method stub
                    Log.d("ERROR","error => "+error.toString());
                }
            }
        ) {     
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError { 
                    Map<String, String>  params = new HashMap<String, String>();  
                    params.put("User-Agent", "Nintendo Gameboy");  
                    params.put("Accept-Language", "fr");

                    return params;  
            }
        };
        queue.add(getRequest);

    }

对于 JsonObjectRequest

JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET,url,
                null, new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                Log.d(tag, response.toString());
                activity.hideDialog();
                try {
                    activity.onRequestServed(response, code);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(tag, "Error: " + error.getMessage());
                Log.e(tag, "Site Info Error: " + error.getMessage());
                Toast.makeText(activity.getApplicationContext(),
                        error.getMessage(), Toast.LENGTH_SHORT).show();
                activity.hideDialog();
                try {
                    activity.onRequestServed(null,code);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }) {

            /**
             * 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");
                headers.put("key", "Value");
                return headers;
            }
        };

【讨论】:

    猜你喜欢
    • 2017-09-18
    • 2016-10-07
    • 2015-12-23
    • 2017-11-29
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2014-11-12
    相关资源
    最近更新 更多