android的網絡請求有不少第三方框架,其中volley因爲其高的定製性、穩定性以及速度快獲得了你們普遍的使用以及研究,這裏我只是說一下我對這個框架下post請求使用的心得體會。 一.cookies的使用 cookies,token,seesion這些均可以理解爲咱們請求登錄接口後,後臺根據用戶信息生成一串字符串,而後每次請求接口後會讀取這串字符串,就能夠識別爲那個用戶,而且根據用戶信息作接下來的邏輯判斷。 首先自定義一個MyPostRequest 繼承 Request 而後重寫getHeaders()方法android
/**
* 在heard裏面加入cookies
* */
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
if (cookies!=null && cookies.length()>1) {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("cookie",cookies);
Log.d("Volley", "headers----------------" + headers);
return headers;
}else {
return super.getHeaders();
}
}
複製代碼
cookie爲取到的cookie值緩存起來json
獲取cookie數組
/**
* 對請求的結果進行處理
* */
@Override
protected Response<RequestCall> parseNetworkResponse(
NetworkResponse response) {
if (cookies==null || DtdApplication.cookies.length()<1) {
Map<String, String> responseHeaders = response.headers;
String rawCookies = responseHeaders.get("Set-Cookie");
if (rawCookies!=null) {
cookies=rawCookies.substring(0,rawCookies.indexOf(";"));
}
}
}
複製代碼
這個方法裏去cookie值 2、BodyContentType緩存
@Override
public String getBodyContentType() {
return "application/json; charset=" + getParamsEncoding();
}
複製代碼
這個方法能夠設置contenttype,contenttype爲請求heard裏面的頭部分,用來識別數據的格式bash
三。定義參數爲object類型服務器
@Override
public byte[] getBody() throws AuthFailureError {
Map<String, Object> params = parms;
if (params != null && params.size() > 0) {
try {
return JsonUtils.toJson(params).getBytes(getParamsEncoding());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return null;
}
複製代碼
從手機端到服務器傳遞的之最後都會轉化成byte[],因此咱們之object轉成byte數組,而後後臺能夠識別就能夠自,治理我轉化成json。cookie
4、設置時間間隔和重複請求網絡
/**
* 重複請求次數時間設置
* */
@Override
public RetryPolicy getRetryPolicy() {
RetryPolicy retryPolicy = new DefaultRetryPolicy(1000*3, 0, 1.0f);
return retryPolicy;
}
複製代碼
這個方法用來設置請求過時時間,第一個參數爲時間,第二個爲重複請求次數app
5、最後在說下Response parseNetworkResponse方法 這個方法爲請求返回後的方法 其中response裏面放的是請求返回的數據 response.data放的是請求返回的體,是body,爲byte數組 response.headers 爲請求頭,存放contenttype、cookies等一些heard信息框架