Android okhttp的cookie使用

之前在找了个网站爬数据有个验证码识别,一直没有办法验证,后来问了大神才知道要用cookie标识的,知道这就好办了,okhttp将cookie拦截存在SheardPreferents里面,在添加至请求头中

联网用的retrofit+okhttp
验证码是图片用的glide

  • okhttp添加拦截器代码如下:
new OkHttpClient.Builder()
                .addInterceptor(new Interceptor() {
                    @Override
                    public okhttp3.Response intercept(Chain chain) throws IOException {
                        okhttp3.Response originalResponse = chain.proceed(chain.request());
                        if (!originalResponse.headers("Set-Cookie").isEmpty()) {
                            StringBuilder stringBuilder = new StringBuilder();
                            for (String header : originalResponse.headers("Set-Cookie")) {
                                stringBuilder.append(header);
                           }
                            SPUtils.saveString(context,Constant.SP.COOKIE,stringBuilder.toString());
                        }
                        return originalResponse;
                    }
                })
                .addInterceptor(new Interceptor() {
                    @Override
                    public okhttp3.Response intercept(Chain chain) throws IOException {
                        String cookie = SPUtils.getString(context, Constant.SP.COOKIE, null);
                        Request newRequest = chain.request().newBuilder()
                                .header("Cookie", cookie != null ? cookie : "") 
                        return chain.proceed(newRequest);
                    }
                })
                .connectTimeout(Constant.CONNECT_TIMEOUT, TimeUnit.SECONDS)
                .writeTimeout(Constant.CONNECT_TIMEOUT, TimeUnit.SECONDS)
                .readTimeout(Constant.CONNECT_TIMEOUT, TimeUnit.SECONDS)
                .build();
  • Glide添加请求头:
String cookie = SPUtils.getString(applicationContext, Constant.SP.COOKIE, null);
 GlideUrl glideUrl = null;
        try {
            glideUrl = new GlideUrl(new URL(url), new LazyHeaders.Builder()
                    .setHeader("Cookie", cookie != null ? cookie : "")
                    .build());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
Glide.with(this).load(glideUrl).fitCenter().error(mVerificationCodeFail).diskCacheStrategy(DiskCacheStrategy.NONE).into(mIvVerificationCode);

好了,就是这么简单.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值