您的位置:首页 > 其它

Volley获取和发送sessionid保持用户登录状态

2016-11-07 11:42 411 查看
重写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);
}

};

重写getHeaders方法发送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);
}
}){
//设置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,"");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: