java web中 HttpClient模拟浏览器登录后发起请求
发布时间 - 2026-01-11 01:16:23 点击率:次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;
/**
* TODO(用一句话描述该文件的作用)
*
* @title: HttpClientDemo.java
* @author zhangjinshan-ghq
* @date 2014-6-11 14:59:04
*/
public class HttpClientDemo
{
/**
* The main method.
*
* @param args the arguments
* @throws Exception the exception
*/
public static void main(String[] args) throws Exception
{
getResoucesByLoginCookies();
}
/**
* 根据登录Cookie获取资源
* 一切异常均未处理,需要酌情检查异常
*
* @throws Exception
*/
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());
/**
* 第一次请求登录页面 获得cookie
* 相当于在登录页面点击登录,此处在URL中 构造参数,
* 如果参数列表相当多的话可以使用HttpClient的方式构造参数
* 此处不赘述
*/
HttpPost post = new HttpPost(urlLogin);
HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();
CookieStore cookieStore = client.getCookieStore();
client.setCookieStore(cookieStore);
/**
* 带着登录过的cookie请求下一个页面,可以是需要登录才能下载的url
* 此处使用的是iteye的博客首页,如果登录成功,那么首页会显示【欢迎XXXX】
*
*/
HttpGet get = new HttpGet(urlAfter);
response = client.execute(get);
entity = response.getEntity();
/**
* 将请求结果放到文件系统中保存为 myindex.html,便于使用浏览器在本地打开 查看结果
*/
String pathName = "d:\\index.html";
writeHTMLtoFile(entity, pathName);
}
/**
* Write htmL to file.
* 将请求结果以二进制形式放到文件系统中保存为.html文件,便于使用浏览器在本地打开 查看结果
*
* @param entity the entity
* @param pathName the path name
* @throws Exception the exception
*/
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();
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# HttpClient模拟浏览器登录后发起请求
# java
# HttpClient模拟浏览器登录
# Java httpClient介绍以及使用示例
# java httpclient设置超时时间和代理的方法
# Java11新特性之HttpClient小试牛刀
# java使用common-httpclient包实现post请求方法示例
# JAVA通过HttpClient发送HTTP请求的方法示例
# JAVA利用HttpClient进行HTTPS接口调用的方法
# Java爬虫Jsoup+httpclient获取动态生成的数据
# JAVA利用HttpClient进行POST请求(HTTPS)实例
# 使用java的HttpClient实现多线程并发
# Java利用HttpClient模拟POST表单操作应用及注意事项
# Java HttpClient实现socks代理的示例代码
# 首页
# 文件系统
# 则将
# 保存为
# 自己的
# 的是
# 带着
# 希望能
# 如果没有
# 可以使用
# 句话
# 谢谢大家
# 该文件
# 跳转到
# 是否正确
# 均未
# 客户端
# 重定向
# 替换成
# 几个步骤
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
node.js报错:Cannot find module 'ejs'的解决办法
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
郑州企业网站制作公司,郑州招聘网站有哪些?
动图在线制作网站有哪些,滑动动图图集怎么做?
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
简单实现Android验证码
jquery插件bootstrapValidator表单验证详解
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
浅述节点的创建及常见功能的实现
Laravel怎么使用artisan命令缓存配置和视图
如何快速搭建高效简练网站?
nodejs redis 发布订阅机制封装实现方法及实例代码
微信小程序 input输入框控件详解及实例(多种示例)
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Android使用GridView实现日历的简单功能
如何用虚拟主机快速搭建网站?详细步骤解析
如何在阿里云完成域名注册与建站?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Android滚轮选择时间控件使用详解
Android Socket接口实现即时通讯实例代码
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
高防服务器租用如何选择配置与防御等级?
,南京靠谱的征婚网站?
IOS倒计时设置UIButton标题title的抖动问题
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
C#如何调用原生C++ COM对象详解
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
*服务器网站为何频现安全漏洞?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何快速建站并高效导出源代码?
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
什么是javascript作用域_全局和局部作用域有什么区别?
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
公司门户网站制作流程,华为官网怎么做?
想要更高端的建设网站,这些原则一定要坚持!
Laravel怎么实现验证码(Captcha)功能
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
zabbix利用python脚本发送报警邮件的方法
Bootstrap整体框架之JavaScript插件架构
iOS UIView常见属性方法小结

