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:
保持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,"");
}
}
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,"");
}
}
相关文章推荐
- Android用WebView获取sessionid保持登录状态
- thinkphp 通过获取用户登录时的session_id来获取session里面的数据传到前台默认显示
- struts2 jsp 通过session获取登录用户id并把值加到流中
- session--保持登录20分钟,常用与用户登录状态
- PHP获取Discuz论坛登录用户名、用户组、用户ID等
- WebContext获取用户登录状态显示隐藏控件
- Membership 获取登录状态判断是否登录用户
- php 依据session与cookie用户登录状态操作类
- WordPress获取当前登录用户的ID
- 超强获取计算机信息类(可获取cpu序列号,网卡地址,ip地址,硬盘id,登录系统用户,计算机名等等)
- ABAP获取用户登录详细信息并已邮件附件的形式发送给你
- django用户登录,是否记住用户登录状态的session实现
- 保持用户状态Session
- 保持用户处于登录状态,加速应用程序启动
- PHP用户登录和状态保持
- 通过SessionID和用户名来保证同一个用户不能同时登录
- 通过SessionID和用户名来保证同一个用户不能同时登录
- 使用加密cookie代替session验证用户登录状态
- 通过SessionID和用户名来保证同一个用户不能同时登录的问题
- 通过SessionID和用户名来保证同一个用户不能同时登录