自分的Volleyの定番コード
CustomRequestクラスを作成して以下の文章でvolley使う。例文はPOSTを使用する場合です。
HashMap<String, String> postMap = new HashMap<String, String>(); postMap.put("uuid", uuId); RequestQueue requestQueue = Volley.newRequestQueue(this); CustomRequest jsObjRequest = new CustomRequest(Request.Method.POST, Constant.USER_ADD_URL, postMap, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.v("初期ユーザー登録、JSON", response.toString()); // ここでタイマー起動 // 3秒カウント開始のスケジュール timer = new Timer(); timer.schedule(new MyTimer(), Constant.TITLE_COUNT_SEC); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.v("初期ユーザー登録、VolleyErr", "" + error); } }); requestQueue.add(jsObjRequest);
public class CustomRequest extends Request<JSONObject> { private Response.Listener<JSONObject> listener; private Map<String, String> params; public CustomRequest(String url, Map<String, String> params, Response.Listener<JSONObject> reponseListener, Response.ErrorListener errorListener) { super(Request.Method.GET, url, errorListener); this.listener = reponseListener; this.params = params; } public CustomRequest(int method, String url, Map<String, String> params, Response.Listener<JSONObject> reponseListener, Response.ErrorListener errorListener) { super(method, url, errorListener); this.listener = reponseListener; this.params = params; } protected Map<String, String> getParams() throws com.android.volley.AuthFailureError { return params; } ; @Override protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(new JSONObject(jsonString), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JSONException je) { return Response.error(new ParseError(je)); } } @Override protected void deliverResponse(JSONObject response) { // TODO Auto-generated method stub listener.onResponse(response); } }