这期内容当中小编将会给大家带来有关在java web项目中使用 HttpClient模拟浏览器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
HttpClient模拟浏览器登录后发起请求
浏览器实现这个效果需要如下几个步骤:
1请求一个需要登录的页面或资源
2服务器判断当前的会话是否包含已登录信息。如果没有登录重定向到登录页面
3手工在登录页面录入正确的账户信息并提交
4服务器判断登录信息是否正确,如果正确则将登录成功信息保存到session中
5登录成功后服务器端给浏览器返回会话的SessionID信息保存到客户端的Cookie中
6浏览器自动跳转到之前的请求地址并携带之前的Cookie(包含登录成功的SessionID)
7服务器端判断session中是否有成功登录信息,如果有则将请求的资源反馈给浏览器
package com.artsoft.demo;import java.io.FileOutputStream; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.CookieStore; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.PoolingClientConnectionManager; import org.apache.http.util.EntityUtils; public class HttpClientDemo { public static void main(String[] args) throws Exception { getResoucesByLoginCookies(); } private static void getResoucesByLoginCookies() throws Exception { HttpClientDemo demo = new HttpClientDemo(); String username = "......";// 登录用户 String password = "......";// 登录密码 // 需要提交登录的信息 String urlLogin = "http://hx.buscoming.cn/Api/Security/Logon?UserCode=" + username + "&Password=" + password; // 登录成功后想要访问的页面 可以是下载资源 需要替换成自己的iteye Blog地址 String urlAfter = "http://hx.buscoming.cn/Api/Security/GetLoginAccount"; DefaultHttpClient client = new DefaultHttpClient(new PoolingClientConnectionManager()); HttpPost post = new HttpPost(urlLogin); HttpResponse response = client.execute(post); HttpEntity entity = response.getEntity(); CookieStore cookieStore = client.getCookieStore(); client.setCookieStore(cookieStore); HttpGet get = new HttpGet(urlAfter); response = client.execute(get); entity = response.getEntity(); String pathName = "d:\\index.html"; writeHTMLtoFile(entity, pathName); } public static void writeHTMLtoFile(HttpEntity entity, String pathName) throws Exception { byte[] bytes = new byte[(int) entity.getContentLength()]; FileOutputStream fos = new FileOutputStream(pathName); bytes = EntityUtils.toByteArray(entity); fos.write(bytes); fos.flush(); fos.close(); } }
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 为何 Java 环境变量配置总是难以成功?(java环境变量配置为什么不成功)
- 如何配置 Java 文件上传接口?(java文件上传接口怎么配置)
- 如何在 JAVA 中直接读取文件流内容?(JAVA怎么直接读取文件流内容)
- 如何将 Java 文件转换为可执行文件?(java文件如何变成可执行文件)
- 如何合理设置缓存池大小?(缓存池大小如何设置)
- 如何轻松进行 java 反汇编?超详细步骤教你快速上手!(如何进行java反汇编)
- 在 Java 中如何实现旧文件内容的覆盖?(java如何将旧文件内容覆盖)
- Java 中如何实现字符串字段的升序排序?(Java字符串字段升序排序怎么实现)
- 如何使用 Java 的 Arrays 类?(详细教程及示例)(java的Arrays类如何使用)
- Java 递归调用会对性能产生哪些影响?(java递归调用的性能影响 )
猜你喜欢
AI推送时光机在java web项目中使用 HttpClient模拟浏览器
后端开发2023-05-31
在java项目中使用 Socket如何实现模拟一个HTTP服务器
后端开发2023-05-31
怎么在vue项目中调用浏览器分享功能
后端开发2023-06-14
如何在Java项目中使用适配器模式
后端开发2023-05-31
怎么在java项目中使用State状态模式
后端开发2023-05-31
责任链模式如何在Java项目中使用
后端开发2023-05-31
如何在java项目中使用迭代器
后端开发2023-05-31
定时器如何在Java项目中使用
后端开发2023-05-31
Iterator迭代器如何在Java项目中使用
后端开发2023-05-31
SynchronousQueue同步器如何在java项目中使用
后端开发2023-05-31
filter过滤器怎么在Java项目中使用
后端开发2023-05-31
在java项目中如何使用Timer定时器
后端开发2023-05-31
java项目中如何使用 web过滤器对乱码进行处理
后端开发2023-05-31
弹簧布局管理器怎么在Java项目中使用
后端开发2023-05-31
如何在Java项目中使用过滤器、拦截器和监听器
后端开发2023-05-31
在Java项目中使用 swing制作一个音乐播放器
后端开发2023-05-31
如何在 Java 中使用 NPM 包管理器和编程算法优化项目?
后端开发2023-07-31
咦!没有更多了?去看看其它编程学习网 内容吧