使用volley发送带有JSON数据的POST请求

使用volley发送带有JSON数据的POST请求

我想寄一个新的JsonObjectRequest请求:

  • 我想接收JSON数据(来自服务器的响应):好的
  • 我想将带有此请求的JSON格式化数据发送到服务器

    JsonObjectRequest request = new JsonObjectRequest(
        Request.Method.POST, "myurl.com", null,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                //...
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //...
            }
        })
        {
            @Override
            protected Map<String,String> getParams() {
                // something to do here ??
                return params;
            }
    
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                // something to do here ??
                return params;
            }
        };

我在我的项目中也使用了gson库。


慕码人8056858
浏览 716回答 3
3回答

临摹微笑

JsonObjectRequest实际接受JSONObject作为身体。从…这篇博客文章,final&nbsp;String&nbsp;url&nbsp;=&nbsp;"some/url";final&nbsp;JSONObject&nbsp;jsonBody&nbsp;=&nbsp;new&nbsp;JSONObject("{\"type\":\"example\"}");new&nbsp;JsonObjectRequest(url,&nbsp;jsonBody,&nbsp;new&nbsp;Response.Listener<JSONObject>()&nbsp;{&nbsp;...&nbsp;});这是源代码和JavaDoc&nbsp;(@param jsonRequest):/** &nbsp;*&nbsp;Creates&nbsp;a&nbsp;new&nbsp;request. &nbsp;*&nbsp;@param&nbsp;method&nbsp;the&nbsp;HTTP&nbsp;method&nbsp;to&nbsp;use &nbsp;*&nbsp;@param&nbsp;url&nbsp;URL&nbsp;to&nbsp;fetch&nbsp;the&nbsp;JSON&nbsp;from &nbsp;*&nbsp;@param&nbsp;jsonRequest&nbsp;A&nbsp;{@link&nbsp;JSONObject}&nbsp;to&nbsp;post&nbsp;with&nbsp;the&nbsp;request.&nbsp;Null&nbsp;is&nbsp;allowed&nbsp;and &nbsp;*&nbsp;&nbsp;&nbsp;indicates&nbsp;no&nbsp;parameters&nbsp;will&nbsp;be&nbsp;posted&nbsp;along&nbsp;with&nbsp;request. &nbsp;*&nbsp;@param&nbsp;listener&nbsp;Listener&nbsp;to&nbsp;receive&nbsp;the&nbsp;JSON&nbsp;response &nbsp;*&nbsp;@param&nbsp;errorListener&nbsp;Error&nbsp;listener,&nbsp;or&nbsp;null&nbsp;to&nbsp;ignore&nbsp;errors. &nbsp;*/public&nbsp;JsonObjectRequest(int&nbsp;method,&nbsp;String&nbsp;url,&nbsp;JSONObject&nbsp;jsonRequest, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener<JSONObject>&nbsp;listener,&nbsp;ErrorListener&nbsp;errorListener)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;super(method,&nbsp;url,&nbsp;(jsonRequest&nbsp;==&nbsp;null)&nbsp;?&nbsp;null&nbsp;:&nbsp;jsonRequest.toString(),&nbsp;listener, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorListener);}

www说

我知道这个线程很古老,但是我遇到了这个问题,我想出了一个很酷的解决方案,这个解决方案对很多人来说都是非常有用的,因为它在很多方面纠正/扩展了volley库。我发现了一些不受支持的开箱即用的截击功能:这,这个JSONObjectRequest并不完美:你必须期待JSON最后(见Response.Listener<JSONObject>).空响应(仅为200状态)怎么办?如果我想直接从ResponseListener?我或多或少地在一个大的泛型类中编译了许多解决方案,以便为我引用的所有问题找到一个解决方案。&nbsp;&nbsp;/** &nbsp;&nbsp;*&nbsp;Created&nbsp;by&nbsp;laurentmeyer&nbsp;on&nbsp;25/07/15. &nbsp;&nbsp;*/ &nbsp;public&nbsp;class&nbsp;GenericRequest<T>&nbsp;extends&nbsp;JsonRequest<T>&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;final&nbsp;Gson&nbsp;gson&nbsp;=&nbsp;new&nbsp;Gson(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;final&nbsp;Class<T>&nbsp;clazz; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;final&nbsp;Map<String,&nbsp;String>&nbsp;headers; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Used&nbsp;for&nbsp;request&nbsp;which&nbsp;do&nbsp;not&nbsp;return&nbsp;anything&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;boolean&nbsp;muteRequest&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Basically,&nbsp;this&nbsp;is&nbsp;the&nbsp;constructor&nbsp;which&nbsp;is&nbsp;called&nbsp;by&nbsp;the&nbsp;others. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;It&nbsp;allows&nbsp;you&nbsp;to&nbsp;send&nbsp;an&nbsp;object&nbsp;of&nbsp;type&nbsp;A&nbsp;to&nbsp;the&nbsp;server&nbsp;and&nbsp;expect&nbsp;a&nbsp;JSON&nbsp;representing&nbsp;a&nbsp;object&nbsp;of&nbsp;type&nbsp;B. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;problem&nbsp;with&nbsp;the&nbsp;#JsonObjectRequest&nbsp;is&nbsp;that&nbsp;you&nbsp;expect&nbsp;a&nbsp;JSON&nbsp;at&nbsp;the&nbsp;end. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;We&nbsp;can&nbsp;do&nbsp;better&nbsp;than&nbsp;that,&nbsp;we&nbsp;can&nbsp;directly&nbsp;receive&nbsp;our&nbsp;POJO. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;That's&nbsp;what&nbsp;this&nbsp;class&nbsp;does. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;method:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP&nbsp;Method &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;classtype:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Classtype&nbsp;to&nbsp;parse&nbsp;the&nbsp;JSON&nbsp;coming&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;to&nbsp;be&nbsp;called &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;requestBody:&nbsp;&nbsp;&nbsp;The&nbsp;body&nbsp;being&nbsp;sent &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;listener:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;errorListener:&nbsp;Error&nbsp;handler&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;headers:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Added&nbsp;headers &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;GenericRequest(int&nbsp;method,&nbsp;Class<T>&nbsp;classtype,&nbsp;String&nbsp;url,&nbsp;String&nbsp;requestBody, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Listener<T>&nbsp;listener,&nbsp;Response.ErrorListener&nbsp;errorListener,&nbsp;Map<String,&nbsp;String>&nbsp;headers)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(method,&nbsp;url,&nbsp;requestBody,&nbsp;listener, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorListener); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clazz&nbsp;=&nbsp;classtype; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.headers&nbsp;=&nbsp;headers; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configureRequest(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Method&nbsp;to&nbsp;be&nbsp;called&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;send&nbsp;some&nbsp;objects&nbsp;to&nbsp;your&nbsp;server&nbsp;via&nbsp;body&nbsp;in&nbsp;JSON&nbsp;of&nbsp;the&nbsp;request&nbsp;(with&nbsp;headers&nbsp;and&nbsp;not&nbsp;muted) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;method:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP&nbsp;Method &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;to&nbsp;be&nbsp;called &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;classtype:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Classtype&nbsp;to&nbsp;parse&nbsp;the&nbsp;JSON&nbsp;returned&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;toBeSent:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;which&nbsp;will&nbsp;be&nbsp;transformed&nbsp;in&nbsp;JSON&nbsp;via&nbsp;Gson&nbsp;and&nbsp;sent&nbsp;to&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;listener:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;errorListener:&nbsp;Error&nbsp;handler&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;headers:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Added&nbsp;headers &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;GenericRequest(int&nbsp;method,&nbsp;String&nbsp;url,&nbsp;Class<T>&nbsp;classtype,&nbsp;Object&nbsp;toBeSent, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Listener<T>&nbsp;listener,&nbsp;Response.ErrorListener&nbsp;errorListener,&nbsp;Map<String,&nbsp;String>&nbsp;headers)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this(method,&nbsp;classtype,&nbsp;url,&nbsp;new&nbsp;Gson().toJson(toBeSent),&nbsp;listener, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorListener,&nbsp;headers); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Method&nbsp;to&nbsp;be&nbsp;called&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;send&nbsp;some&nbsp;objects&nbsp;to&nbsp;your&nbsp;server&nbsp;via&nbsp;body&nbsp;in&nbsp;JSON&nbsp;of&nbsp;the&nbsp;request&nbsp;(without&nbsp;header&nbsp;and&nbsp;not&nbsp;muted) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;method:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP&nbsp;Method &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;to&nbsp;be&nbsp;called &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;classtype:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Classtype&nbsp;to&nbsp;parse&nbsp;the&nbsp;JSON&nbsp;returned&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;toBeSent:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;which&nbsp;will&nbsp;be&nbsp;transformed&nbsp;in&nbsp;JSON&nbsp;via&nbsp;Gson&nbsp;and&nbsp;sent&nbsp;to&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;listener:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;errorListener:&nbsp;Error&nbsp;handler&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;GenericRequest(int&nbsp;method,&nbsp;String&nbsp;url,&nbsp;Class<T>&nbsp;classtype,&nbsp;Object&nbsp;toBeSent, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Listener<T>&nbsp;listener,&nbsp;Response.ErrorListener&nbsp;errorListener)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this(method,&nbsp;classtype,&nbsp;url,&nbsp;new&nbsp;Gson().toJson(toBeSent),&nbsp;listener, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorListener,&nbsp;new&nbsp;HashMap<String,&nbsp;String>()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Method&nbsp;to&nbsp;be&nbsp;called&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;send&nbsp;something&nbsp;to&nbsp;the&nbsp;server&nbsp;but&nbsp;not&nbsp;with&nbsp;a&nbsp;JSON,&nbsp;just&nbsp;with&nbsp;a&nbsp;defined&nbsp;String&nbsp;(without&nbsp;header&nbsp;and&nbsp;not&nbsp;muted) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;method:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP&nbsp;Method &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;to&nbsp;be&nbsp;called &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;classtype:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Classtype&nbsp;to&nbsp;parse&nbsp;the&nbsp;JSON&nbsp;returned&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;requestBody:&nbsp;&nbsp;&nbsp;String&nbsp;to&nbsp;be&nbsp;sent&nbsp;to&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;listener:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;errorListener:&nbsp;Error&nbsp;handler&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;GenericRequest(int&nbsp;method,&nbsp;String&nbsp;url,&nbsp;Class<T>&nbsp;classtype,&nbsp;String&nbsp;requestBody, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Listener<T>&nbsp;listener,&nbsp;Response.ErrorListener&nbsp;errorListener)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this(method,&nbsp;classtype,&nbsp;url,&nbsp;requestBody,&nbsp;listener, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorListener,&nbsp;new&nbsp;HashMap<String,&nbsp;String>()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Method&nbsp;to&nbsp;be&nbsp;called&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;GET&nbsp;something&nbsp;from&nbsp;the&nbsp;server&nbsp;and&nbsp;receive&nbsp;the&nbsp;POJO&nbsp;directly&nbsp;after&nbsp;the&nbsp;call&nbsp;(no&nbsp;JSON).&nbsp;(Without&nbsp;header) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;to&nbsp;be&nbsp;called &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;classtype:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Classtype&nbsp;to&nbsp;parse&nbsp;the&nbsp;JSON&nbsp;returned&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;listener:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;errorListener:&nbsp;Error&nbsp;handler&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;GenericRequest(String&nbsp;url,&nbsp;Class<T>&nbsp;classtype,&nbsp;Response.Listener<T>&nbsp;listener,&nbsp;Response.ErrorListener&nbsp;errorListener)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this(Request.Method.GET,&nbsp;url,&nbsp;classtype,&nbsp;"",&nbsp;listener,&nbsp;errorListener); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Method&nbsp;to&nbsp;be&nbsp;called&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;GET&nbsp;something&nbsp;from&nbsp;the&nbsp;server&nbsp;and&nbsp;receive&nbsp;the&nbsp;POJO&nbsp;directly&nbsp;after&nbsp;the&nbsp;call&nbsp;(no&nbsp;JSON).&nbsp;(With&nbsp;headers) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;to&nbsp;be&nbsp;called &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;classtype:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Classtype&nbsp;to&nbsp;parse&nbsp;the&nbsp;JSON&nbsp;returned&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;listener:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;errorListener:&nbsp;Error&nbsp;handler&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;headers:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Added&nbsp;headers &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;GenericRequest(String&nbsp;url,&nbsp;Class<T>&nbsp;classtype,&nbsp;Response.Listener<T>&nbsp;listener,&nbsp;Response.ErrorListener&nbsp;errorListener,&nbsp;Map<String,&nbsp;String>&nbsp;headers)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this(Request.Method.GET,&nbsp;classtype,&nbsp;url,&nbsp;"",&nbsp;listener,&nbsp;errorListener,&nbsp;headers); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Method&nbsp;to&nbsp;be&nbsp;called&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;send&nbsp;some&nbsp;objects&nbsp;to&nbsp;your&nbsp;server&nbsp;via&nbsp;body&nbsp;in&nbsp;JSON&nbsp;of&nbsp;the&nbsp;request&nbsp;(with&nbsp;headers&nbsp;and&nbsp;muted) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;method:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP&nbsp;Method &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;to&nbsp;be&nbsp;called &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;classtype:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Classtype&nbsp;to&nbsp;parse&nbsp;the&nbsp;JSON&nbsp;returned&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;toBeSent:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;which&nbsp;will&nbsp;be&nbsp;transformed&nbsp;in&nbsp;JSON&nbsp;via&nbsp;Gson&nbsp;and&nbsp;sent&nbsp;to&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;listener:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;errorListener:&nbsp;Error&nbsp;handler&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;headers:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Added&nbsp;headers &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;mute:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Muted&nbsp;(put&nbsp;it&nbsp;to&nbsp;true,&nbsp;to&nbsp;make&nbsp;sense) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;GenericRequest(int&nbsp;method,&nbsp;String&nbsp;url,&nbsp;Class<T>&nbsp;classtype,&nbsp;Object&nbsp;toBeSent, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Listener<T>&nbsp;listener,&nbsp;Response.ErrorListener&nbsp;errorListener,&nbsp;Map<String,&nbsp;String>&nbsp;headers,&nbsp;boolean&nbsp;mute)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this(method,&nbsp;classtype,&nbsp;url,&nbsp;new&nbsp;Gson().toJson(toBeSent),&nbsp;listener, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorListener,&nbsp;headers); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.muteRequest&nbsp;=&nbsp;mute; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Method&nbsp;to&nbsp;be&nbsp;called&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;send&nbsp;some&nbsp;objects&nbsp;to&nbsp;your&nbsp;server&nbsp;via&nbsp;body&nbsp;in&nbsp;JSON&nbsp;of&nbsp;the&nbsp;request&nbsp;(without&nbsp;header&nbsp;and&nbsp;muted) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;method:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP&nbsp;Method &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;to&nbsp;be&nbsp;called &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;classtype:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Classtype&nbsp;to&nbsp;parse&nbsp;the&nbsp;JSON&nbsp;returned&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;toBeSent:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;which&nbsp;will&nbsp;be&nbsp;transformed&nbsp;in&nbsp;JSON&nbsp;via&nbsp;Gson&nbsp;and&nbsp;sent&nbsp;to&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;listener:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;errorListener:&nbsp;Error&nbsp;handler&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;mute:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Muted&nbsp;(put&nbsp;it&nbsp;to&nbsp;true,&nbsp;to&nbsp;make&nbsp;sense) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;GenericRequest(int&nbsp;method,&nbsp;String&nbsp;url,&nbsp;Class<T>&nbsp;classtype,&nbsp;Object&nbsp;toBeSent, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Listener<T>&nbsp;listener,&nbsp;Response.ErrorListener&nbsp;errorListener,&nbsp;boolean&nbsp;mute)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this(method,&nbsp;classtype,&nbsp;url,&nbsp;new&nbsp;Gson().toJson(toBeSent),&nbsp;listener, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorListener,&nbsp;new&nbsp;HashMap<String,&nbsp;String>()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.muteRequest&nbsp;=&nbsp;mute; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Method&nbsp;to&nbsp;be&nbsp;called&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;send&nbsp;something&nbsp;to&nbsp;the&nbsp;server&nbsp;but&nbsp;not&nbsp;with&nbsp;a&nbsp;JSON,&nbsp;just&nbsp;with&nbsp;a&nbsp;defined&nbsp;String&nbsp;(without&nbsp;header&nbsp;and&nbsp;not&nbsp;muted) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;method:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP&nbsp;Method &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;to&nbsp;be&nbsp;called &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;classtype:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Classtype&nbsp;to&nbsp;parse&nbsp;the&nbsp;JSON&nbsp;returned&nbsp;from&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;requestBody:&nbsp;&nbsp;&nbsp;String&nbsp;to&nbsp;be&nbsp;sent&nbsp;to&nbsp;the&nbsp;server &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;listener:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;errorListener:&nbsp;Error&nbsp;handler&nbsp;of&nbsp;the&nbsp;request &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;mute:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Muted&nbsp;(put&nbsp;it&nbsp;to&nbsp;true,&nbsp;to&nbsp;make&nbsp;sense) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;GenericRequest(int&nbsp;method,&nbsp;String&nbsp;url,&nbsp;Class<T>&nbsp;classtype,&nbsp;String&nbsp;requestBody, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Listener<T>&nbsp;listener,&nbsp;Response.ErrorListener&nbsp;errorListener,&nbsp;boolean&nbsp;mute)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this(method,&nbsp;classtype,&nbsp;url,&nbsp;requestBody,&nbsp;listener, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errorListener,&nbsp;new&nbsp;HashMap<String,&nbsp;String>()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.muteRequest&nbsp;=&nbsp;mute; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;Response<T>&nbsp;parseNetworkResponse(NetworkResponse&nbsp;response)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;The&nbsp;magic&nbsp;of&nbsp;the&nbsp;mute&nbsp;request&nbsp;happens&nbsp;here &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(muteRequest)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(response.statusCode&nbsp;>=&nbsp;200&nbsp;&&&nbsp;response.statusCode&nbsp;<=&nbsp;299)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;If&nbsp;the&nbsp;status&nbsp;is&nbsp;correct,&nbsp;we&nbsp;return&nbsp;a&nbsp;success&nbsp;but&nbsp;with&nbsp;a&nbsp;null&nbsp;object,&nbsp;because&nbsp;the&nbsp;server&nbsp;didn't&nbsp;return&nbsp;anything &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Response.success(null,&nbsp;HttpHeaderParser.parseCacheHeaders(response)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;If&nbsp;it's&nbsp;not&nbsp;muted;&nbsp;we&nbsp;just&nbsp;need&nbsp;to&nbsp;create&nbsp;our&nbsp;POJO&nbsp;from&nbsp;the&nbsp;returned&nbsp;JSON&nbsp;and&nbsp;handle&nbsp;correctly&nbsp;the&nbsp;errors &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;json&nbsp;=&nbsp;new&nbsp;String(response.data,&nbsp;HttpHeaderParser.parseCharset(response.headers)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;parsedObject&nbsp;=&nbsp;gson.fromJson(json,&nbsp;clazz); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Response.success(parsedObject,&nbsp;HttpHeaderParser.parseCacheHeaders(response)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(UnsupportedEncodingException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Response.error(new&nbsp;ParseError(e)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(JsonSyntaxException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Response.error(new&nbsp;ParseError(e)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Map<String,&nbsp;String>&nbsp;getHeaders()&nbsp;throws&nbsp;AuthFailureError&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;headers&nbsp;!=&nbsp;null&nbsp;?&nbsp;headers&nbsp;:&nbsp;super.getHeaders(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;configureRequest()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Set&nbsp;retry&nbsp;policy &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Add&nbsp;headers,&nbsp;for&nbsp;auth&nbsp;for&nbsp;example &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;}这看起来可能有点过火了,但是拥有所有这些构造函数是很酷的,因为您有所有的情况:(主构造函数不打算直接使用,当然,它是可能的)。解析为POJO/Header的请求手动设置/POJO发送解析为POJO/POJO以发送响应的请求解析为POJO/String以发送响应的请求解析为POJO(GET)的响应的请求将响应解析为POJO(GET)/Header手动设置的请求没有响应的请求(200-空体)/头手动设置/POJO发送没有响应的请求(200-空体)/POJO发送没有响应的请求(200-空体)/字符串发送当然,为了使其工作,您必须拥有Google的gsonLib;只需添加:compile&nbsp;'com.google.code.gson:gson:x.y.z'到依赖项(当前版本为2.3.1).

冉冉说

final&nbsp;String&nbsp;URL&nbsp;=&nbsp;"/volley/resource/12";//&nbsp;Post&nbsp;params&nbsp;to&nbsp;be&nbsp;sent&nbsp;to&nbsp;the&nbsp;serverHashMap<String,&nbsp;String>&nbsp;params&nbsp;=&nbsp;new&nbsp;HashMap<String,&nbsp;String>();params.put("token",&nbsp;"AbCdEfGh123456");JsonObjectRequest&nbsp;req&nbsp;=&nbsp;new&nbsp;JsonObjectRequest(URL,&nbsp;new&nbsp;JSONObject(params), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Response.Listener<JSONObject>()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onResponse(JSONObject&nbsp;response)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VolleyLog.v("Response:%n&nbsp;%s",&nbsp;response.toString(4)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(JSONException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;new&nbsp;Response.ErrorListener()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onErrorResponse(VolleyError&nbsp;error)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VolleyLog.e("Error:&nbsp;",&nbsp;error.getMessage()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});//&nbsp;add&nbsp;the&nbsp;request&nbsp;object&nbsp;to&nbsp;the&nbsp;queue&nbsp;to&nbsp;be&nbsp;executedApplicationController.getInstance().addToRequestQueue(req);参考
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android