package com.github.cchao.touchnews.util; import android.content.Context; import android.util.Log; import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.Volley; import com.github.cchao.touchnews.BaseApplication; import org.json.JSONObject; import java.util.Map; /** * Created by cchao on 2016/4/5. * E-mail: [email protected] * Description: Volley 网络请求util */ public class NetRequestUtil { public final String TAG = this.getClass().getSimpleName(); Context mContext = BaseApplication.getContext(); public static RequestQueue mRequestQueue = Volley.newRequestQueue(BaseApplication.getContext()); private static NetRequestUtil netRequestUtil; private NetRequestUtil() { } public static NetRequestUtil getInstance() { if (netRequestUtil == null) { synchronized (NetRequestUtil.class) { if (netRequestUtil == null) netRequestUtil = new NetRequestUtil(); } } return netRequestUtil; } /** * get请求获取JsonObject * * @param url url * @param param param * @param listener callback */ public void getJson(String url, Map<String, String> param, final RequestListener listener) { url += prepareParam(param); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { listener.onResponse(response); Log.i(TAG, response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { listener.onError(error); Log.i(TAG, error.getMessage(), error); } }); mRequestQueue.add(jsonObjectRequest); } /** * get请求获取JsonObject 带Headers参数 * * @param url url * @param param param * @param listener callback */ public void getJsonWithHeaders(String url, final Map<String, String> param, final Map<String, String> headers, final RequestListener listener) { url += prepareParam(param); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { listener.onResponse(response); // Log.i ( TAG, response.toString ( ) ); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { listener.onError(error); // Log.i ( TAG, error.getMessage ( ), error ); } }) { @Override public Map<String, String> getHeaders() throws AuthFailureError { if (headers == null) { return super.getHeaders(); } else { return headers; } } }; mRequestQueue.add(jsonObjectRequest); } public void post(String url, final Map<String, String> param, final NetRequestUtil.RequestListener listener) { final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { listener.onResponse(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { listener.onError(error); } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { return param; } }; mRequestQueue.add(jsonObjectRequest); } private String prepareParam(Map<String, String> paramMap) { if (paramMap == null || paramMap.isEmpty()) { return ""; } else { StringBuffer sb = new StringBuffer(); sb.append("?"); for (String key : paramMap.keySet()) { String value = (String) paramMap.get(key); if (sb.length() < 1) { sb.append(key).append("=").append(value); } else { sb.append("&").append(key).append("=").append(value); } } return sb.toString(); } } public void cancelAll(Object tag) { mRequestQueue.cancelAll(tag); } public interface RequestListener { public void onResponse(JSONObject response); public void onError(VolleyError error); } }