1、通过Volley框架中JsonObjectRequest类中方法
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response)
获取cookie,代码如下:
private String getCookie(NetworkResponse response){
String cookieFromResponse = null;
String mHeader = response.headers.toString();
Log.d("LOG","get headers in parseNetworkResponse "+response.headers.toString());
//使用正则表达式从reponse的头中提取cookie内容的子串
Pattern pattern=Pattern.compile("Set-Cookie.*?;");
Matcher m=pattern.matcher(mHeader);
if(m.find()){
cookieFromResponse =m.group();
Log.d("LOG","cookie from server "+ cookieFromResponse);
}
//去掉cookie末尾的分号
cookieFromResponse = cookieFromResponse.substring(11,cookieFromResponse.length()-1);
Log.w("LOG","cookie substring "+ cookieFromResponse);
return cookieFromResponse;
}
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers,
PROTOCOL_CHARSET));
JSONObject responseJson = new JSONObject(jsonString);
String newJsonString = null;
getCookie(response);
2、将得到的cookie添加到返回的业务数据json串中
3、在接口请求的onResponse中获取cookie并进行保存
4、volley请求是 header中添加"Cookie"