sed的用法
2015-12-23 15:01
288 查看
在实际应用中,向服务端获取数据,每次都需要登录,十分麻烦。希望登录一次后,在一定时间内不需要再次登录,就能直接访问服务了。
要实现该功能,也十分简单,首先需要服务端支持记住我的功能,客户端登录的时候选择记住我,这个时候服务端就会把记住我的信息存在cookie中返回给客户端,客户端后面登录的时候只需要带上这个cookie中的值,就可以直接免登录了
具体实现代码:
第一步,模拟登录请求,保存cookie
第二步,使用返回的cookie值,发送直接请求
第一次获取的cookie值也可以保存在文件,下次直接使用cookie值进行请求,而不需要再次登录。
该功能对于服务端也有要求,对于第二次请求的url,在服务端设置对于记住我功能可以访问。
需要的jar包:
要实现该功能,也十分简单,首先需要服务端支持记住我的功能,客户端登录的时候选择记住我,这个时候服务端就会把记住我的信息存在cookie中返回给客户端,客户端后面登录的时候只需要带上这个cookie中的值,就可以直接免登录了
具体实现代码:
第一步,模拟登录请求,保存cookie
public static List<String> sendLogin(String url) { List<String> list = new ArrayList<String>(); HttpGet request = new HttpGet(url); try { HttpResponse response = HttpClients.createDefault() .execute(request); if (response.getStatusLine().getStatusCode() == 200) { String result = EntityUtils.toString(response.getEntity()); // 从响应消息中获取cookie中的rememberMe值,并保存到list中,供后面使用 Header[] hhh = response.getHeaders("Set-Cookie"); for (Header t : hhh) { String v = t.getValue(); if (v.startsWith("rememberMe")) { list.add(v); } } } } catch (Exception ex) { ex.printStackTrace(); } return list; }
第二步,使用返回的cookie值,发送直接请求
public static String getDate(String url, List<String> cookies) { HttpGet request = new HttpGet(url); try { for (String cookie : cookies) { request.addHeader("Cookie", cookie); } HttpResponse response = HttpClients.createDefault() .execute(request); if (response.getStatusLine().getStatusCode() == 200) { String result = EntityUtils.toString(response.getEntity()); return result; } } catch (Exception ex) { ex.printStackTrace(); } return null; }
第一次获取的cookie值也可以保存在文件,下次直接使用cookie值进行请求,而不需要再次登录。
该功能对于服务端也有要求,对于第二次请求的url,在服务端设置对于记住我功能可以访问。
需要的jar包:
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5</version> </dependency>
相关文章推荐
- Application中定义公用数据
- Linux Bash Shell入门教程
- nginx扩展模块,不能正常显示FastDfs上传的图片问题
- 设计模式C++实现--享元模式
- unity3d-准备工作 - VS2013
- 从头认识java-14.1 再次对比数组与容器
- 分割字符串
- Java [Leetcode 100]Same Tree
- Android入门教程 Activity生命周期
- 第四章--INI配置
- 下拉树编辑风格 - 报表系统
- 源码推荐(12.23B):圆形方形两种方式的图片裁剪,滑动视图
- case: 初始化操作由case标签跳过 错误解决办法:加{}
- 设计模式C++实现--代理模式
- 进程基础-进程的创建、管理与调度、终止
- Java Web 的servlet 之过滤器 filter
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- 证书文件(pfx)读取时报 “指定的网络密码不正确”
- 语法、函数、开发工具详细释义查询网站
- rsync 排除指定目录或文件进行同步