HttpClient模拟请求登录的jSessionId无法手动修改的问题
来源:互联网 发布:外汇软件怎么买涨买跌 编辑:程序博客网 时间:2024/06/01 08:31
原因: 当jSessionId失效(发生改变)时必须重新new一个HttpClient
代码
import com.cotton.util.NumberUtil;import org.apache.commons.httpclient.Header;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.NameValuePair;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.lang3.StringUtils;import org.apache.log4j.Logger;import java.util.ArrayList;import java.util.List;import java.util.Map;public class HttpClientUtil { private static Logger logger = Logger.getLogger(HttpClientUtil.class); private static HttpClient client = null; private static String theJSessionId; public static String post(String url, String[] proxy, String jSessionId, Map<String, String> params) throws Exception { if (!StringUtils.equals(theJSessionId, jSessionId)) { logger.warn("new HttpClient"); client = new HttpClient(); theJSessionId = jSessionId; } String content = "error"; PostMethod post = new PostMethod(url); List<Header> headers = new ArrayList<Header>(); headers.add(new Header("Cookie", "JSESSIONID=" + jSessionId)); client.getHostConfiguration().getParams().setParameter("http.default-headers", headers); NameValuePair[] pairs = new NameValuePair[params.size()]; int i = 0; for (Map.Entry<String, String> en : params.entrySet()) { pairs[i] = new NameValuePair(en.getKey(), en.getValue()); i++; } post.addParameters(pairs); if (proxy != null && proxy.length == 2) { client.getHostConfiguration().setProxy(proxy[0], NumberUtil.toInt(proxy[1])); } int code = client.executeMethod(post); if (code == 200) { content = post.getResponseBodyAsString(); } return content; }}
阅读全文
0 0
- HttpClient模拟请求登录的jSessionId无法手动修改的问题
- 关于jsessionid的问题
- 【实战】(二)android模拟qq登录(apache的httpClient发送get和post请求)
- HttpClient的使用(模拟登录)
- httpclient post请求,需要登录的地址
- HttpClient模拟浏览器登录后发起请求(携带Cookie发请求)以及网页显示的事件过程
- 基于jsessionid的单点登录经验总结
- phpMyAdmin修改mysql密码后无法登录的问题
- phpMyAdmin修改mysql密码后无法登录的问题
- HttpClient get请求在HttpResponse中无法获得Location的问题
- HttpClient get请求在HttpResponse中无法获得Location的问题
- HttpClient get请求在HttpResponse中无法获得Location的问题
- httpclient模拟登陆,不支持https的问题
- httpclient模拟登陆,不支持https的问题
- httpclient 的 doPost请求中文乱码问题
- HttpCLient请求困扰了两天的问题
- HttpClient--HttpClient的Post请求
- mysql数据库初次登录时无法登录问题以及修改密码的问题
- Android基础知识(一)
- CentOS 7.x 安装Sublime Text 3.0正式版
- jqGrid 详解大全
- 数据结构-查找算法
- 文章标题
- HttpClient模拟请求登录的jSessionId无法手动修改的问题
- Easyui笔记
- [markdown]欢迎使用CSDN-markdown编辑器
- MyBatis学习总结(22)——Mybatis自增长ID获取
- c专家编程
- java基本语法(socket数据互转、传)
- Unity_调用Shader使YUV420p贴到Materials
- Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号
- 栈的压入、弹出序列