使用Volley实现session会话保持

本文介绍了如何使用Volley库处理网络请求时,实现session会话保持。通过自定义Request子类并保存服务器返回的cookie数据到SharedPreferences中,确保在后续请求中能正确携带session信息。详细步骤包括创建RequestQueue、保存和读取cookie的工具方法,以及展示了一个自定义JsonObjectRequest的示例,特别是重写了getParams方法来处理POST请求。
摘要由CSDN通过智能技术生成

使用volley很久了,关于volley处理网络请求,其确实封装简化了过程,然而有些功能还是本身不支持,需要自己扩展配置。比如本地保存服务端返回的cookie数据。

volley中的Request类,代表一个网络请求的抽象类,我们常常用到的JsonObjectRequest和StringObjectRequest都是继承的它,我们通过构建一个Request类的非抽象子类(StringRequest、JsonRequest、ImageRequest 或自定义)对象,并将其加入到·RequestQueue·中来完成一次网络请求操作。
Volley 支持 8 种 Http 请求方式 GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE, PATCH
Request 类中包含了请求 url,请求请求方式,请求 Header,请求 Body,请求的优先级等信息。因为是抽象类,子类必须重写的两个方法:

  1. abstract protected Response parseNetworkResponse(NetworkResponse response);
    此方法意思是将网络返回的字节数据转换成想要的类型(如String,Onject或者其他)

  2. abstract protected void deliverResponse(T response);
    此方法将已经解析成想要的类型的内容传递给它们的监听回调。

要想保存session,可见我们在请求的时候需要保存到sharedpreference中.一般情况下我们在application中新new 一个 RequestQueue 就可以处理所有网络请求,这样RequestQueue的生命周期维护就交给application了,保存cookie的工具方法可以在application中完成。
代码如下:

public class CustomApplication extends Application {
   

    private static final String SET_COOKIE_KEY = "Set-Cookie";
    private static final String COOKIE_KEY = "Cookie";
    private static final String SESSION_COOKIE = "JSESSIONID";

    private static CustomApplication instance;
    private RequestQueue requestQueue;
    private SharedPreferences preferences;

    public static CustomApplication newInstance() {
        return instance;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        preferences = PreferenceManager.getDefaultSharedPreferences(this);
        requestQueue = Volley.newRequestQueue(this);
    }

    public RequestQueue getRequestQueue() {
        return requestQueue;
    }


    /**
     * 检查返回的Response header中有没有session
     *
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值