java 使用 HttpClient post 提交表单

zq910515 2019-08-20 07:33:45
修改路由器网络信息,浏览器post 提交表单,使用抓包工具抓取的数据如下:






上图中的表单数据格式为什么找不到IP等信息?
想问问,java代码使用HttpClient 发送post请求修改路由器的网络,需要怎么写代码?
我想模拟浏览器提交表单的方式,提交java代码中的变量,达到修改路由器网络的目的。


我测试代码如下:

public void updateNet(String url) {
System.out.println();
// 封装post请求参数
StringBody token = new StringBody("c87bcca1f66d6d968e0c318cf89a22e4", ContentType.TEXT_PLAIN);
StringBody cbi_submit = new StringBody("1", ContentType.TEXT_PLAIN);
StringBody tab_network_wan6 = new StringBody("general", ContentType.TEXT_PLAIN);
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("token", token);
reqEntity.addPart("cbi.submit", cbi_submit);
reqEntity.addPart("tab.network.wan6", tab_network_wan6);


// 创建httpClient实例
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建httpPost远程连接实例
HttpPost httpPost = new HttpPost(url);
// 配置请求参数实例
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间
.setConnectionRequestTimeout(35000)// 设置连接请求超时时间
.setSocketTimeout(60000)// 设置读取数据连接超时时间
.build();
// 为httpPost实例设置配置
httpPost.setConfig(requestConfig);
// 设置请求头
httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");

// 为httpPost设置封装好的请求参数
httpPost.setEntity(reqEntity);


CloseableHttpResponse httpResponse = null;
try {

// httpClient对象执行post请求,并返回响应参数对象
httpResponse = httpClient.execute(httpPost,httpClientContext);
for(Header header:httpResponse.getAllHeaders()){
System.out.println(header.getName()+" : "+header.getValue());
}
System.out.println();
System.out.println("statusCode : "+httpResponse.getStatusLine().getStatusCode());

// 从响应对象中获取响应内容
HttpEntity entity = httpResponse.getEntity();


} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != httpResponse) {
try {
httpResponse.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != httpClient) {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}



...全文
1015 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
瘦死的黑骆驼 2019-08-20
  • 打赏
  • 举报
回复
怎么没有呢,不是有host?你请求的目标地址,还有referer,表示你第一次打开浏览输入的网址 想模拟浏览器提交,你就先在浏览器里正常访问一下,然后把消息头里的东西都带上就好了嘛,现在很多网站为了过滤无效访问,是需要对消息头里的部分信息进行验证的,比如Referer、User-Agent
rumlee 2019-08-20
  • 打赏
  • 举报
回复
这种还需要抓什么包啊,直接用浏览器审查功能看一下就好了。 一般步骤可能都是这样 1、提交管理账号和密码到路由器登录的地址,登录成功之后获取cookie 2、带上cookie提交数据修改网络 这其实就是一个非常简单的需要登录的爬虫程序。
内容概要:本文围绕“基于交流潮流的电力系统多元件N-k故障模型研究”展开,深入探讨了利用Matlab代码实现电力系统在发生多个关键元件同时故障(即N-k故障)情况下的交流潮流计算与故障分析方法。该模型不仅考虑了传统潮流方程的非线性特性,还引入了故障约束条件,能够精确模拟复杂多样的故障场景,如短路、断线等,进而评估电网在极端运行条件下的稳态与动态行为。研究通过构建典型电力系统算例,验证了所提模型在故障筛选、脆弱性识别及系统恢复策略制定方面的有效性,为电力系统安全评估、风险预警和防御体系构建提供了坚实的理论依据和技术支撑。此外,模型具备良好的扩展性,可进一步应用于连锁故障传播分析、恶意攻击模拟等高级安全分析领域。; 适合人群:具备电力系统分析基础理论知识和Matlab编程能力的高校研究生、科研院所研究人员以及电力公司从事电网规划、运行与安全管理的技术人员,特别适用于开展电力系统安全稳定、可靠性评估与应急响应机制研究的专业人士。; 使用场景及目标:①开展电力系统在多重故障条件下的交流潮流仿真,评估系统电压稳定性、线路过载风险及负荷损失程度;②识别电网中的关键薄弱环节与脆弱元件,支撑电网加固改造与防御资源配置;③用于科研项目中的故障场景建模与算法验证,或作为教学案例帮助学生理解复杂故障下的系统响应机制。; 阅读建议:此资源以Matlab代码为核心实现手段,建议读者结合理论推导与代码实现进行对照学习,重点关注故障建模过程中雅可比矩阵的修正方法、故障注入方式及收敛性处理策略,建议在仿真中逐步增加故障数量与复杂度,深入理解N-k故障对系统潮流分布的影响规律,并尝试将其拓展至含新能源接入的现代电力系统场景中进行验证与优化。

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧