Android Volley框架的幾種post提交請求方式
在app開發中,我們最常見的就是從app客戶端向服務端發一個http請求.對於兩種基本的web請求方式get和post來說,get請求方式相對比較簡單,在此略過不表.本文重點描述一下通過volley進行幾種post提交的方式.
1.客戶端以普通的post方式進行提交,服務端返回字串
2.客戶端以json串的post請求方式進行提交,服務端返回json串RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); StringRequest stringRequest = new StringRequest(Request.Method.POST,httpurl, new Response.Listener<String>() { @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<String, String> getParams() { //在這裡設定需要post的引數 Map<String, String> map = new HashMap<String, String>(); map.put("name1", "value1"); map.put("name2", "value2"); return params; } }; requestQueue.add(stringRequest);
看了上面這段程式碼,會覺得volley這個框架實在是還不夠完善,使用JsonObjectRequest物件提交一個post請求,如果有引數需要提交,就必須以JSONObject的json串方式提交.RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); Map<String, String> map = new HashMap<String, String>(); map.put("name1", "value1"); map.put("name2", "value2"); JSONObject jsonObject = new JSONObject(params); JsonRequest<JSONObject> jsonRequest = new JsonObjectRequest(Method.POST,httpurl, jsonObject, new Response.Listener<JSONObject>() { @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<String, String> getParams() { // Map<String, String> map = new HashMap<String, String>(); // map.put("name1", "value1"); // map.put("name2", "value2"); // return params; // } @Override public Map<String, String> getHeaders() { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Accept", "application/json"); headers.put("Content-Type", "application/json; charset=UTF-8"); return headers; } }; requestQueue.add(jsonRequest);
如果服務端並不支援這種方式呢?比如常見的spring mvc服務端,就很難支援json的請求方式.
那麼我們想實現這個目標,就需要使用下面給出的辦法.
3.客戶端以普通的post方式進行提交,服務端返回json串
首先在Activity類裡,繼承Request實現一個NormalPostRequest類
接下來的呼叫方式和前面差不多,生成一個Request例項,加入佇列中即可.private class NormalPostRequest extends Request<JSONObject> { private Map<String, String> mMap; private Listener<JSONObject> mListener; public NormalPostRequest(String url, Listener<JSONObject> listener,ErrorListener errorListener, Map<String, String> map) { super(Request.Method.POST, url, errorListener); mListener = listener; mMap = map; } //mMap是已經按照前面的方式,設定了引數的例項 @Override protected Map<String, String> getParams() throws AuthFailureError { return mMap; } //此處因為response返回值需要json資料,和JsonObjectRequest類一樣即可 @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) { mListener.onResponse(response); } }
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
Request<JSONObject> request = new NormalPostRequest(httpurl,
new Response.Listener<JSONObject>() {
@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);
以上程式碼在android 4.3環境下測試通過.相關推薦
Android Volley框架的幾種post提交請求方式
首先簡單描述一下Google的Android開發團隊在2013年推出的一個網路通訊框架Volley.它的設計目標是進行資料量不大,但通訊頻繁的網路操作,而對於大資料量的網路操作,比如下載檔案等,Volley的表現就不盡如人意。 在app開發中,我們最常見的就是從app客戶端
Android Volley框架的幾種post提交請求方式和探究POST、GET提交
首先簡單描述一下Google的Android開發團隊在2013年推出的一個網路通訊框架Volley.它的設計目標是進行資料量不大,但通訊頻繁的網路操作,而對於大資料量的網路操作,比如下載檔案等,Volley的表現就不盡如人意。 在app開發中,我們最常見的就是從app客戶端
RestTemplate中幾種常見的請求方式
see 信息 book ren new 三個參數 body turn 表示 GET請求 第一種:getForEntity getForEntity方法的返回值是一個ResponseEntity<T>,ResponseEntity<T>是Spring對
Spring框架幾種建立bean的方式
Spring框架下,Bean的建立和裝配非常的靈活,提供了三種主要的方式,並且相互見可以互相看見,也就是你可以隨意地採用你喜歡且合適的方式建立Bean,而不用擔心他們之間的相容問題。 一、使用XML顯示配置Bean
SpringCloud之RestTemplate,幾種常見的請求方式
https://github.com/lenve/SimpleSpringCloud/tree/master/RestTemplate在Spring Cloud中服務的發現與消費一文中,當我們從服務消費端去呼叫服務提供者的服務的時候,使用了一個很好用的物件,叫做RestTemplate,當時我們只使
postman的幾種資料提交的方式,以及幾種提交方式的介紹
1、form-data: 就是http請求中的multipart/form-data,它會將表單的資料處理為一
Android中的幾種網路請求方式詳解
Android應用經常會和伺服器端互動,這就需要手機客戶端傳送網路請求,下面介紹四種常用網路請求方式,我這邊是通過Android單元測試來完成這四種方法的,還不清楚Android的單元測試的同學們請看Android開發技巧總結中的Android單元測試的步驟一文。 java
Android-Volley框架中的get和post方式
2013年Google在 I/O大會上釋出了Volley框架,它是Android平臺上的開源網路通訊庫,封裝了Http網路請求,非同步任務,快取,圖片下載等功能。特點是能使網路通訊更簡單,更快速,更穩定。尤其適合處理資料量不大,但是網路通訊頻繁的場景。 使用S
Android開發中幾種有用的的日歷控件實現
顯示 lec 外觀 翻頁 frame 時間 lean android平臺 星期 我們大家都知道,在Android平臺3.0中才新增了日歷視圖控件,可以顯示網格狀的日歷內容,那麽對於3.0以下的版本要使用日歷控件只能借助第三方,目前用的最多的是CalendarView。 先簡
(轉載) Android常見的幾種內存泄漏小結
tro ride callbacks 弱引用 command ext.get 網絡數據 指定 runnable 轉載: http://www.jb51.net/article/109261.htm 在Android程序開發中,當一個對象已經不需要再使用了,本該被回收時,而另
Android下的幾種時間格式轉換
master .com ast mat 分鐘 || orm led else 更多更全的工具類,請參考github上的Blankj/AndroidUtilCode 將毫秒轉換為小時:分鐘:秒格式 public static String ms2HMS(int _ms){
高通方案的Android設備幾種開機模式的進入與退出
內容 熱啟動 boot 操作 com 刷機 安裝 tor min 高通方案的Android設備主要有以下幾種開機模式,Android、EDL、Fastboot、Recovery和FFBM,其進入及退出的方式如下表。 開機模式 屏幕表現 冷啟
四種常見的POST提交資料方式
HTTP/1.1 協議規定的 HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 這幾種。其中 POST 一般用來向服務端提交資料,本文主要討論 POST 提交資料的幾種方式。 我們知道,HTTP 協議是以 ASCII 碼
Android Volley框架詳解
注:文章出自http://blog.csdn.net/guolin_blog/article/details/17482095,有興趣可以先去閱讀。 Volley簡介 對於Android系統網路通訊,我們知道目前用的最普遍的就是HttpClient和HttpURLConnection,但是H
application/json 四種常見的 POST 提交資料方式
application/json 四種常見的 POST 提交資料方式 轉載宣告: 本文系轉載自以下兩篇文章: 四種常見的 POST 提交資料方式 作者: 滄海一滴 轉載僅為方便學習檢視,一切權利屬於原作者,本人只是做了整理和排版,如果帶來不便請聯絡我刪除。
Content-Type 四種常見的 POST 提交資料方式
參考於: https://blog.csdn.net/tycoon1988/article/details/40080691(瞭解) 和: https://www.gy0929.com/wz/1420.html?_d_id=7ff19a05e92534d3df987da4343f71(設定) 和:
httpclient4 post提交請求亂碼問題解決
分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
zookeeper入門之curator框架--幾種鎖的操作
package com.git.zookeeper.passwordmanager.lock; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import or
volley框架的使用post帶引數遇到的問題
關於volley用法的詳細介紹參考 http://www.cnblogs.com/caobotao/p/5071658.html http://blog.csdn.net/guolin_blog/article/details/17482095 以下是以上兩篇文章及在網上找到的關於v
java 常見幾種傳送http請求案例
<span style="font-family: Arial, Helvetica, sans-serif;">import java.io.BufferedReader;</span> import java.io.FileOutputS