重写parseNetworkResponse方法获取session:
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());;
StringRequest stringRequest = new StringRequest(Request.Method.POST,url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//打印错误信息
Log.e("TAG", volleyError.getMessage(), volleyError);
}
}){
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
//获取session
new ConnectViaSession().getSession(response);
return super.parseNetworkResponse(response);
}
};
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());;
StringRequest stringRequest = new StringRequest(Request.Method.POST,url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//打印错误信息
Log.e("TAG", volleyError.getMessage(), volleyError);
}
}){
//设置session
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
String sesseionid = new ConnectViaSession().GetSession();
if (!sesseionid.equals("")) {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("cookie", sesseionid);
return headers;
}else {
return super.getHeaders();
}
}
};
mQueue.add(stringRequest);
保持session:
package com.example.cuboo.myapplication.DataFromNetApi;
import android.content.Context;
import android.content.SharedPreferences;
import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import java.util.HashMap;
import java.util.Map;
/**
* Created by cuboo on 2016/11/7.
*/
public class ConnectViaSession {
private static final String CooKie = "cookie_";
private String mHeader;
private Map<String, String> getHeader=new HashMap<String, String>();
private String rawCookies;
private String SesstionID;
private Context context;
public ConnectViaSession(Context context){
this.context = context;
}
public void getSession(NetworkResponse response){
//获取头部信息
mHeader = response.headers.toString();
//获取cookie头部信息
getHeader = response.headers;
rawCookies = getHeader.get("Set-Cookie");
//;分隔获取sessionid
SesstionID = rawCookies.substring(0,rawCookies.indexOf(";"));
//使用SharedPreferences本地存储
SaveSession(SesstionID);
}
//本地保存session
public void SaveSession(String sessionid){
SharedPreferences preferences = context.
getSharedPreferences("ConnectViaSession.class", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(CooKie,sessionid);
editor.commit();
}
//从本地获取session
public String GetSession(){
SharedPreferences preferences = context
.getSharedPreferences("ConnectViaSession.class", Context.MODE_PRIVATE);
return preferences.getString(CooKie,"");
}
}