編輯:關於Android編程
1.客戶端以普通的post方式進行提交,服務端返回字符串
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); StringRequest stringRequest = new StringRequest(Request.Method.POST,httpurl, new Response.Listener2.客戶端以json串的post請求方式進行提交,服務端返回json串() { @Override public void onResponse(String response) { Log.d(TAG, "response -> " + response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e(TAG, error.getMessage(), error); } }) { @Override protected Map getParams() { //在這裡設置需要post的參數 Map map = new HashMap (); map.put("name1", "value1"); map.put("name2", "value2"); return params; } }; requestQueue.add(stringRequest);
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); Map看了上面這段代碼,會覺得volley這個框架實在是還不夠完善,使用JsonObjectRequest對象提交一個post請求,如果有參數需要提交,就必須以JSONObject的json串方式提交.map = new HashMap (); map.put("name1", "value1"); map.put("name2", "value2"); JSONObject jsonObject = new JSONObject(params); JsonRequest jsonRequest = new JsonObjectRequest(Method.POST,httpurl, jsonObject, new Response.Listener () { @Override public void onResponse(JSONObject response) { Log.d(TAG, "response -> " + response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e(TAG, error.getMessage(), error); } }) { //注意此處override的getParams()方法,在此處設置post需要提交的參數根本不起作用 //必須象上面那樣,構成JSONObject當做實參傳入JsonObjectRequest對象裡 //所以這個方法在此處是不需要的 // @Override // protected Map getParams() { // Map map = new HashMap (); // map.put("name1", "value1"); // map.put("name2", "value2"); // return params; // } @Override public Map getHeaders() { HashMap headers = new HashMap (); headers.put("Accept", "application/json"); headers.put("Content-Type", "application/json; charset=UTF-8"); return headers; } }; requestQueue.add(jsonRequest);
private class NormalPostRequest extends Request接下來的調用方式和前面差不多,生成一個Request實例,加入隊列中即可.{ private Map mMap; private Listener mListener; public NormalPostRequest(String url, Listener listener,ErrorListener errorListener, Map map) { super(Request.Method.POST, url, errorListener); mListener = listener; mMap = map; } //mMap是已經按照前面的方式,設置了參數的實例 @Override protected Map getParams() throws AuthFailureError { return mMap; } //此處因為response返回值需要json數據,和JsonObjectRequest類一樣即可 @Override protected Response 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) { mListener.onResponse(response); } }
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); Request以上代碼在android 4.3環境下測試通過.request = new NormalPostRequest(httpurl, new Response.Listener () { @Override public void onResponse(JSONObject response) { Log.d(TAG, "response -> " + response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e(TAG, error.getMessage(), error); } }, params); requestQueue.add(request);
上兩節我們都是使用文本文件保存用戶的信息,這明顯是存在漏洞的。同時對文件中的內容不好管理。今天我們學習用SharedPreference保存。sharedPreferen
我們都知道,Android 2.3(姜餅) SDK發布的時候,在SDK中增加了第三方add-ons,其中就包括了針對平板電腦的Galaxy Tab Addon。 當我
新版微信電腦版加了一個消息撤回功能,讓我們使用微信過程中因為誤操作發錯信息後提供解決辦法。小編大家介紹一下微信電腦版圖如何撤回信息教程,一起來看看吧!微信電
前言團隊項目開發前的統一三要素:統一需求/開發文檔,統一代碼規范,統一環境(編譯/測試/發布)。一個項目團隊,要想有高效的產出,必須在團隊協作上下好功夫,必須在項目開發統