`
三里小龙
  • 浏览: 90367 次
  • 性别: Icon_minigender_1
  • 来自: 孝感
社区版块
存档分类
最新评论

HttpClient操作cookie简单示例

    博客分类:
  • Web
阅读更多

package org.sunnysolong.net;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

 

import org.apache.commons.httpclient.Cookie;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.HttpException;

import org.apache.commons.httpclient.HttpStatus;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.methods.GetMethod;

 

 

/**

 * Wap登录返回测试

* Title: JavaTech<br>

* Description: <br>

* Copyright: Copyright (c) 2011 <br>

* Create DateTime: Nov 14, 2011 8:55:24 PM <br>

* @author wangmeng

 */

public class WapQuery {

 

private static String URL_LINK = "http://192.168.1.147/t3/wap/index.php";

// http://192.168.1.147/t3/wap/index.php?mod=topic&code=myhome

// 转向URL:http://192.168.1.147:80/t3/wap/index.php

private static final HttpClient HTTP_CLIENT = new HttpClient();

private static Cookie[] cookies;

private static GetMethod login;

private static GetMethod home;

/**

* 输入流转换成字符串

* @param is: 输入流

* @return 字符串对象

*/

private static String InputStreamToString(InputStream is){

        BufferedReader reader = null;

        StringBuffer responseText = null;

        String readerText = null;

try {

reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

responseText = new StringBuffer();

readerText = reader.readLine();

       while(readerText != null){

        responseText.append(readerText);

        responseText.append(System.getProperty("line.separator"));

        readerText = reader.readLine();

       }

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return responseText.toString();

}

/**

* 将cookie写入指定文件

* @param cookies: cookie

* @param fileName: 文件名

*/

private static void write(Cookie[] cookies, String fileName){

try {

String path = System.getProperty("user.home") + "\\" + fileName;

File file = new File(path);

BufferedWriter bw = new BufferedWriter(new FileWriter(file));

for(Cookie c : cookies){

bw.append(c.toString());

bw.append(System.getProperty("line.separator"));

}

bw.flush();

bw.close();

Runtime.getRuntime().exec("explorer " + path + "");

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 登录

*/

private static void login(){

try {

//指定链接设定请求方式

login = new GetMethod(URL_LINK);

//入参

NameValuePair mod = new NameValuePair("mod", "login");

NameValuePair code = new NameValuePair("code", "dologin");

NameValuePair username = new NameValuePair("username", URLEncoder.encode("wangli@qq.com", "UTF-8"));

NameValuePair password = new NameValuePair("password", URLEncoder.encode("123456", "UTF-8"));

NameValuePair iswap = new NameValuePair("iswap", "1");

NameValuePair cityID = new NameValuePair("cityID", URLEncoder.encode("755", "UTF-8"));

NameValuePair city = new NameValuePair("city", URLEncoder.encode("深圳", "UTF-8"));

NameValuePair[] params = new NameValuePair[]{mod, code, username, password, iswap, cityID, city};

//设参

       login.setQueryString(params);

       //禁用重定向

       login.setFollowRedirects(false);

       //执行请求并返回状态码

            int statusCode = HTTP_CLIENT.executeMethod(login);

         //转向URL:http://192.168.1.147:80/t3/wap/index.php

            if (statusCode != HttpStatus.SC_OK) {

                System.err.println("LOGIN_ERROR >>> " + login.getStatusLine());

            }

            System.out.println("LOGIN_RESPONSE >>>" + InputStreamToString(login.getResponseBodyAsStream()));

            //设定全局cookie

            cookies = HTTP_CLIENT.getState().getCookies();

            //记录cookie

            write(cookies, "login-cookie.txt");

} catch (UnsupportedEncodingException e) {

System.err.println("(LOGIN) " + e.getMessage());

} catch (HttpException e) {

System.err.println("(LOGIN) " + e.getMessage());

e.printStackTrace();

} catch (IOException e) {

System.err.println("(LOGIN) " + e.getMessage());

} finally{

//释放连接

login.releaseConnection();

}

 

}

/**

* 主页

*/

private static void home(){

        try {

         //指定链接设定请求方式

         home = new GetMethod(URL_LINK);

         //入参、设参

         home.setQueryString("mod=topic&code=myhome");

         //记录cookie

         write(HTTP_CLIENT.getState().getCookies(), "home-cookie.txt");

         //添加cookie

         HTTP_CLIENT.getState().addCookies(cookies);

         //执行请求并返回状态码

            int statusCode = HTTP_CLIENT.executeMethod(home);

            if (statusCode != HttpStatus.SC_OK) {

                System.err.println("HOME_ERROR >>>" + home.getStatusLine());

            }

            //再次记录cookie

            write(HTTP_CLIENT.getState().getCookies(), "access-cookie.txt");

            System.out.println("HOME_RESPONSE >>>" + InputStreamToString(home.getResponseBodyAsStream()));

        } catch (HttpException e) {

         System.err.println("(HOME) " + e.getMessage());

        } catch (IOException e) {

         System.err.println("(HOME) " + e.getMessage());

        } finally {

            home.releaseConnection();

        }

 

}

 

public static void main(String[] args) {

//登录

login();

//转向主页

home();

/**

* 说明:查看login-cookie.txt和home-cookie.txt中记录的cookie是否完全一致,是则表示会话信息保留完整。

* access-cookie.txt中记录的是第二次请求返回的cookie,用来与全局记录的cookie做信息对比。

*/

    }

 

}

0
1
分享到:
评论

相关推荐

    Java设计定制】考勤流程优化 - 论文、源码、PPT全套.zip

    高质量大全套,这是我用过的,改改名字直接那去用就好了

    TypeError Contract inherits from multiple base contracts with conflicting functions - 继承冲突(解决办法).md

    TypeError Contract inherits from multiple base contracts with conflicting functions - 继承冲突(解决办法).md

    mysql-connector-java-5.1.42.jar

    该资源为mysql-connector-java-5.1.42.jar,欢迎下载使用哦!

    内置式永磁电机(IPM)电磁与机械耦合分析及磁桥设计优化

    内容概要:本文深入探讨了内置式永磁电机(IPM)中磁桥设计面临的挑战及其解决方案。磁桥作为连接磁体和转子铁芯的关键部分,其厚度直接影响电机的电磁特性和机械强度。文中详细介绍了利用COMSOL软件进行电磁和机械耦合分析的方法,包括设置非线性材料属性、计算离心力以及处理磁体与铁芯间的接触问题。同时,讨论了磁致伸缩效应对系统的影响,并提出了通过参数化扫描优化磁桥厚度的技术路径。最终得出结论,最佳磁桥厚度应在0.5-1.2mm范围内,具体取决于冷却方式和材料选择。 适合人群:从事电机设计、电磁兼容性研究及相关领域的工程师和技术人员。 使用场景及目标:适用于希望深入了解IPM电机内部工作机制的研究人员,尤其是关注如何平衡电磁性能与机械强度的设计者。目标是在确保高效运行的同时提高设备的安全性和可靠性。 其他说明:文章强调了理论模型与实际应用相结合的重要性,指出即使是最优设计方案也需要考虑制造公差和长期使用的耐久性。此外,还提到了一些实用技巧,如采用不同导磁率材料来改善局部应力分布。

    Postgres Checkpointer 实战:优化数据持久化性能的策略

    Postgres Checkpointer 实战:优化数据持久化性能的策略 https://blog.csdn.net/weixin_47560078/article/details/148338420

    ### 2024年印尼税收袖珍指南-普华永道版

    内容概要:《2024年印尼税收袖珍指南》由普华永道发布,涵盖了印尼税收体系的关键方面。主要内容包括企业所得税、个人所得税、预提税、国际税收协定、增值税、奢侈品销售税、碳税、关税与消费税、税收优惠、地方税、印花税、税务会计、税务稽查与评估、强制执行征税、税务纠纷与处理等。企业所得税税率一般为22%,特定条件可享受优惠。个人所得税采用超额累进税率,最高达35%。预提税涵盖多种收入类型,如工资、利息、股息等。国际税收协定帮助避免双重征税,提供优惠税率。增值税标准税率为11%,部分商品和服务免征。税收优惠包括免税期、加计扣除等,尤其针对特定行业和地区。地方税种类繁多,如土地与建筑物税、机动车税等。税务稽查与评估确保纳税人合规,税务纠纷可通过异议、申诉、诉讼等方式解决。 适用人群:企业财务人员、税务顾问、跨国公司税务部门、个人纳税人等。 使用场景及目标:①帮助企业理解和遵守印尼税法,优化税务规划;②协助个人纳税人正确申报各类税项;③为税务顾问提供最新税收政策信息,提升专业服务水平;④为跨国公司处理跨境税务问题提供指导。 阅读建议:此指南内容详尽,建议读者根据自身需求重点阅读相关章节,结合实际案例深入理解各项规定,并关注最新政策动态,确保税务处理合法合规。

    使用Vditor将Markdown文档渲染成网页(Vite+JS+Vditor)

    详细介绍了通过Vditor将Markdown格式文档渲染成Web网页的具体实现,并且实现了Markdown格式不具备的图片格式居中以及图片源更换的功能。

    多智能体系统分布式自适应一致性控制技术及其Matlab实现

    内容概要:本文详细介绍了多智能体系统中分布式自适应一致性控制技术,涵盖线性和非线性动力学系统。文中探讨了纯一致性控制和leader-follower一致性控制两种主要研究方向,提出了一种基于自适应调节相邻智能体间耦合权值的分布式相对状态一致性协议。该协议能够在所有无向连通通信图上实现一致性,并且可以在没有全局信息的情况下完全分布式地执行。文章还提供了相应的Matlab复现代码,帮助读者理解和验证所提协议的有效性。 适合人群:从事自动化控制、人工智能领域的研究人员和技术人员,尤其是对多智能体系统感兴趣的专业人士。 使用场景及目标:①深入理解多智能体系统中分布式一致性控制的基本原理和实现方法;②掌握纯一致性控制和leader-follower一致性控制的设计思路;③通过Matlab代码实现实验验证,提升实际应用能力。 其他说明:本文不仅提供了理论分析,还包括详细的代码实现,有助于读者从理论到实践全面掌握该技术。未来研究将继续探索更复杂的动力学行为和通信图结构下的分布式一致性控制问题,并拓展其在无人驾驶、机器人编队等领域的应用。

    Test failed Assertion error(解决方案).md

    Test failed Assertion error(解决方案).md

    实训商业源码-智能设备-毕业设计.zip

    实训商业源码-智能设备-毕业设计.zip

    基于SVPWM原理的T型逆变器仿真研究:深入理解与实际应用指南

    内容概要:本文档详细介绍了基于空间矢量脉宽调制(SVPWM)原理的T型三相逆变器仿真实现方法。主要内容涵盖扇区判断、作用时间计算及时区切换等关键步骤,并提供了完整的仿真文件、详细说明文档及相关参考文献。文中不仅展示了具体的MATLAB和C++代码片段,还分享了作者在实际调试过程中遇到的问题及解决方案,如电压矢量落于扇区分界线时的边界容错处理、过调制情况下的饱和函数应用以及中点电位平衡问题等。最终仿真结果显示,在母线电压600V条件下,输出线电压THD低于3%,显著优于传统SPWM方法。 适合人群:电气工程专业学生、电力电子工程师及对SVPWM技术感兴趣的科研人员。 使用场景及目标:① 学习并掌握SVPWM的基本原理及其在T型逆变器中的具体应用;② 掌握从理论到实践的完整流程,包括仿真建模、代码实现及调试技巧;③ 提升解决实际工程问题的能力,如处理非线性因素带来的挑战。 其他说明:本文档强调理论与实践相结合,提供丰富的实战经验和实用技巧,帮助读者更好地理解和应用SVPWM技术。

    2006-2025 国内宏观经济数据集(21项)CSV

    该数据集记录了国内生产总值(GDP)的相关数据,数据覆盖时间从2006年1月起至今,数据按月度进行统计。 包含:居民消费价格指数CP1、国内生产总值 GDP、制造业采购经理指数 PMI、消费者信心指数、业品出厂价格指数 PP1、海关进出口增减情况 HGJCK、财政收入 czsr、社会消费品零售总额、全社会用电分类情况表、社会融资规模增量统计、LPR品种数据、年度外汇储备数据、M2货币供应年率、外汇贷款数据、大宗商品价格、本外币存款、存款准备金率、央行货币当局资产负债、货币供应量、央行黄金和外汇储备、中国GDP年率。

    MATLAB环境下8-PSK调制解调及多普勒频移同步算法仿真研究 数字通信 高级版

    内容概要:本文详细介绍了基于MATLAB的8-PSK(八相移键控)调制解调及其在存在多普勒频移情况下的同步算法仿真实现。首先解释了8-PSK的基本概念,包括其星座图特点以及在移动环境中由于多普勒效应引起的频偏问题。接着给出了完整的MATLAB代码来完成整个流程,从生成随机符号序列开始,经过调制、加入多普勒频移和噪声干扰,再到接收端进行下变频、匹配滤波、频偏估计与补偿,最终通过星座图、眼图和频谱对比展示了同步算法的效果。文中还特别强调了一些容易忽视的技术细节,比如pskmod函数的相位偏移设置、根升余弦滤波器的选择、频偏估计方法的选择等。 适合人群:对数字通信理论有一定了解并希望深入理解8-PSK调制解调机制及其同步算法的研究人员和技术爱好者。 使用场景及目标:适用于想要利用MATLAB工具探索8-PSK调制特性的人士,在无线通信领域特别是涉及高速移动环境下的信号传输研究中有重要应用价值。目的是帮助读者掌握8-PSK调制解调的具体实现步骤,同时学会如何应对由多普勒频移带来的挑战。 其他说明:文中提供的MATLAB代码可以直接用于实验验证,同时也为后续进一步优化提供了很好的起点。对于初学者来说,可以作为学习数字通信系统的基础教程;而对于有经验的研发人员,则能从中获得关于频偏补偿的新思路。

    Comsol仿真技术在PEM燃料电池堆热管理中的应用与建模实践 Comsol v1.0

    内容概要:本文详细介绍了利用Comsol仿真软件对聚合物电解质膜(PEM)燃料电池堆进行热管理建模的方法和技术。文中强调了保持电池单元间温度一致性的必要性,探讨了模型的具体构成,包括温度、电位、物质传递和流体流动的模拟。此外,还展示了Comsol大神们如何通过精确的数学模型和算法解决复杂物理问题,从而优化燃料电池堆的整体性能。 适合人群:从事燃料电池研究的科研人员、工程师及相关领域的学生。 使用场景及目标:适用于希望深入了解燃料电池堆内部工作机理及其热管理系统的人群,旨在提高燃料电池的设计效率和运行可靠性。 其他说明:随着清洁能源技术的发展,Comsol等专业仿真工具的应用将有助于推动燃料电池技术的进步,在未来的能源科技研究中扮演重要角色。

    基于Comsol的飞秒多脉冲激光烧蚀材料仿真:双温模型与PDE固体传热模型的应用

    内容概要:本文详细介绍了利用Comsol进行飞秒多脉冲激光烧蚀材料仿真的方法。首先,通过建立双温模型(电子温度和晶格温度)来模拟材料内部的能量传递过程,采用PDE模块和固体传热模型相结合的方式,实现了温度场和应力场的精确仿真。文中还提供了具体的数学表达式和建模步骤,如激光热源项的高斯型表达式以及双温方程的具体形式。此外,文章探讨了脉冲堆积效应对温度和应力的影响,并展示了如何通过后处理代码提取关键参数的数据,以便更好地理解和优化激光烧蚀效果。 适合人群:从事微加工领域的研究人员和技术人员,尤其是对激光烧蚀材料仿真感兴趣的科学家和工程师。 使用场景及目标:适用于需要精确模拟飞秒激光烧蚀材料过程中温度场和应力场变化的研究项目。主要目标是帮助用户理解双温模型的工作机制,掌握Comsol软件的操作技巧,从而优化激光加工工艺,提高加工质量和效率。 其他说明:文章强调了激光重复频率和脉冲能量之间的平衡关系,指出过高的频率可能导致热影响区面积增大,进而影响加工质量。因此,在实际应用中需要综合考虑多个因素,确保最佳的加工效果。

    TypeError Contract inherits from multiple base contracts with conflicting functions解决办法.md

    TypeError Contract inherits from multiple base contracts with conflicting functions解决办法.md

    实训商业源码-渔具产品网站源码-毕业设计.zip

    实训商业源码-渔具产品网站源码-毕业设计.zip

    Java设计服务】简易考勤系统:提供论文、源码及PPT.zip

    高质量大全套,这是我用过的,改改名字直接那去用就好了

    LBM多孔介质流动仿真:基于D2Q9模型的Matlab实现及泊肃叶流理论验证 - LBM

    内容概要:本文详细介绍了利用格子玻尔兹曼方法(LBM),特别是D2Q9离散化模型,在Matlab环境下对多孔介质内部单相流体流动进行仿真的全过程。主要内容涵盖:1) 使用QSGS算法生成随机多孔介质结构并优化孔隙形态;2) 设计合理的边界条件确保数值稳定性;3) 结合泊肃叶流理论公式验证模拟结果准确性;4) 基于达西定律计算渗透率评估模型性能;5) 提供了丰富的可视化手段如Paraview和Matlab内置绘图工具展示流场特征。文中不仅提供了完整的代码片段,还分享了许多实用的经验技巧,帮助读者更好地理解和应用这一先进的计算流体力学(CFD)方法。 适合人群:从事计算流体力学研究或工程应用的技术人员,尤其是希望深入了解LBM方法及其在多孔介质流动问题中应用的研究者。 使用场景及目标:适用于需要模拟复杂几何结构内流体行为的科研项目或工业设计任务,旨在提高对微观尺度下流固耦合作用机制的认识水平,为优化材料结构设计提供理论依据和技术支持。 其他说明:文章强调了理论与实践相结合的重要性,鼓励读者动手尝试代码实现,并通过调整关键参数探索不同条件下系统的响应规律。此外,还特别指出了一些容易被忽视但又至关重要的细节问题,如松弛时间的选择范围、边界条件的设定方式等,有助于初学者少走弯路。

    实训商业源码-五金网站-毕业设计.zip

    实训商业源码-五金网站-毕业设计.zip

Global site tag (gtag.js) - Google Analytics