在 json 对象参数 Volley post 中发送令牌头
Posted
技术标签:
【中文标题】在 json 对象参数 Volley post 中发送令牌头【英文标题】:Send token header in json object paramater 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);
【问题讨论】:
How to set custom header in Volley Request的可能重复 不,@VivekMishra 我今天早些时候回答了这个问题。它使用 'Map此请求也有 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;
;
【讨论】:
以上是关于在 json 对象参数 Volley post 中发送令牌头的主要内容,如果未能解决你的问题,请参考以下文章
带有标头和原始 json 正文的 Volley POST 请求
Android Volley 如何使用 volley 在 POST 请求中发送用户名和密码以及其他参数
使用 Volley 发送带有 JSON 数据的 POST 请求