Glide结合Okhttp做cookie管理实现注册需求的图片验证码短信验证码功能
来源:互联网 发布:西门子触摸屏编程 编辑:程序博客网 时间:2024/05/26 12:57
简介
有一种需求是这样子,在注册这个功能上,利用cookie进行标识当前手机,进行短信验证码的获取。
流程是这样的(有点坑,csdn好像用代码画不了下面这个图):
这时候问题来了,我们需要获取Glide请求验证码的Cookie,这该怎么解决呢?
方法1
结合okhttp,Glide使用okhttp进行加载,然后okhttp进行cookie管理,发送请求获取短信验证码。
1. 导包
导入使得glide支持okhttp的包(注意后面有aar,就是代表导入aar的包,包含资源的。这里的这个包 包含了Manifest,里面有对应的服务等)
compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
2. 定义cookie管理器类
自定义Okhttp的cookie管理,在Okhttp初始化的时候设置进去。
因为发送短信的请求需要利用图形验证码请求的cookie,所以cookie管理的逻辑就是,保存上一次请求的cookie,下一次请求的时候利用上一次请求的cookie。
/** * 特殊的自动管理Cookies */ private class CookiesManager implements CookieJar { //保存每个url的cookie private HashMap<HttpUrl, List<Cookie>> cookieStore = new HashMap<>(); //上一个请求url private HttpUrl url; @Override public void saveFromResponse(HttpUrl httpUrl, List<Cookie> list) { //保存链接的cookie cookieStore.put(httpUrl, list); //保存上一次的url,供给下一次cookie的提取。 url = httpUrl; } @Override public List<Cookie> loadForRequest(HttpUrl httpUrl) { //加载上一个链接的cookie List<Cookie> cookies = cookieStore.get(url); return cookies != null ? cookies : new ArrayList<Cookie>(); } }
3. Glide注册okhttp
//初始化okhttp, mOkHttpClient = new OkHttpClient.Builder() .cookieJar(new CookiesManager()) //cookie管理 .build(); //不Register的话,图片请求不会经过OkHttpClient Glide.get(MainActivity.this) .register( //使用okhttp作为图片请求 GlideUrl.class ,InputStream.class ,new OkHttpUrlLoader.Factory(mOkHttpClient));
4. 加载图形验证码
如常加载,因为是图像验证码,所以这里禁止缓存。
Glide.with(MainActivity.this) .load(PicUrl) .skipMemoryCache(true) //验证码不缓存 .diskCacheStrategy(DiskCacheStrategy.NONE) .into(imageView);
这时候加载的Glide加载的图片就是用okhttp进行加载的了,所以会有保存到cookie。
5.请求短信验证码
获取图形验证码完毕之后,输入验证码到编辑框,然后继续请求短信验证码接口:
private void postAsynHttp(String code) { //请求短信验证码的接口 String url = SmsUrl+"?captcha="+code; //创建请求 Request request = new Request.Builder() .url(url) .get() .build(); final Call call = mOkHttpClient.newCall(request); //在线程执行 new Thread(new Runnable() { @Override public void run() { try { Response response = call.execute(); //打印请求结果 Log.e("@@", response.body().string()); } catch (IOException e) { e.printStackTrace(); } } }).start(); }
这就可以了。主要是cookie的管理。
方法2
图形验证码不要用Glide加载了。 直接用网络框架例如okhttp下载回来,但是cookie还是得用上面的方式管理。
注意: 这篇文章不是说Glide加载需要验证的图片。
2 0
- Glide结合Okhttp做cookie管理实现注册需求的图片验证码短信验证码功能
- java实现注册的短信验证码
- 用短信验证码SDK实现手机号注册功能
- Android请求服务器获取短信验证码实现注册功能
- Java用户注册服务器发送短信验证码功能实现
- 短信返回验证码功能的实现
- Android注册短信验证码功能
- springmvc中注册功能与validate.js验证并结合图片验证码
- 短信验证码注册
- 短信验证码功能
- thinkphp注册功能---图片验证码
- Android实现获取短信验证码的功能以及自定义GUI短信验证
- ajax实现短信验证码功能
- js ajax实现短信验证码功能
- 多线程实现重获短信验证码功能
- java 实现短信验证码功能
- 简述短信验证码登录功能实现
- js ajax实现短信验证码功能
- 2.4 struct类型
- 登陆 记住密码
- 5.1-java8日期和时间DateTime,LocalDateTime
- javascript数组去重方法。
- swust.oj 0259
- Glide结合Okhttp做cookie管理实现注册需求的图片验证码短信验证码功能
- load average信息详解
- 个人收藏
- HTTPS研究
- 5.2DateTime示例
- P2550 [AHOI2001]彩票摇奖
- 四种比较简单的图像显著性区域特征提取方法原理及实现-----> AC/HC/LC/FT。
- 2.5 面向对象
- EventBus3.0源码分析