Android Volley 的post請求自定義 和 volley 的cookies 使用

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信息框架

相關文章
相關標籤/搜索