1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| package com.zxt.network;
import android.text.TextUtils; import android.util.Log;
import com.android.volley.AuthFailureError; import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.toolbox.HttpHeaderParser; import com.google.gson.Gson; import com.qianmi.qmpos.AppConfig;
import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map;
public class GsonRequest<T> extends Request<T> {
private static final String TAG = "GsonRequest";
private final Listener<T> mListener;
private Gson mGson;
private Class<T> mClass; private Object mRequest; private String mBody;
public GsonRequest(int method, String url, Object request, Class<T> clazz, Listener<T> listener, ErrorListener errorListener) { super(method, url, errorListener); mGson = new Gson(); mClass = clazz; mListener = listener; mRequest = request; if (null != request) { mBody = mGson.toJson(mRequest); } }
public GsonRequest(String url, Object request, Class<T> clazz, Listener<T> listener, ErrorListener errorListener) { this(Method.POST, url, request, clazz, listener, errorListener); Log.d(TAG, "-----url is:" + url); }
@Override public byte[] getBody() throws AuthFailureError { if (null == mRequest) { return null; } Log.d(TAG, "-----request json: " + mBody); return mBody.getBytes(); }
@Override protected Response<T> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(mGson.fromJson(jsonString, mClass), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } }
@Override protected void deliverResponse(T response) { mListener.onResponse(response); Log.i(TAG, "-----response:" + new Gson().toJson(response)); }
@Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> extraHeaders = new HashMap<>(); extraHeaders.put("Content-Type", "application/json"); extraHeaders.put("Accept", "application/json");
if (!TextUtils.isEmpty(mBody)) { extraHeaders.put("Sign", MD5Util.stringToMD5(AppConfig.SIGN_SECRET + mBody + <span style="font-family: Arial, Helvetica, sans-serif;">AppConfig.SIGN_SECRET </span><span style="font-family: Arial, Helvetica, sans-serif;">));</span> } if (!TextUtils.isEmpty(AppConfig.TOKEN)) { extraHeaders.put("Authorization", "Bearer " + AppConfig.TOKEN); } Log.d(TAG, "-----extra headers: " + extraHeaders.toString());
return extraHeaders; } }
|