HttpPost.setHeader(Cookie, PHPSESSID= + PHPSESSID)方式的HttpClient工具类
摘要: session在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一个不变就可以用到web的session了,做法是第一次数据请求时就获取sessionid的值并保存在一个静态变量中,然后在第二次请求数据的时候要将这个sessionid一并放在Cookie中发给服务器,服务器则是通过这个sessionid来识
session 在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一 个不变就可以用到web的session了,做法是第一次数据请求时就获取sessionid的值并保存在一个静态变量中,然后在第二次请求数据的时候要 将这个sessionid一并放在Cookie中发给服务器,服务器则是通过这个sessionid来识别究竟是那个客户端在请求数据的,在php中这个 sessionid的名字叫做PHPSESSID。 在java 下sessionid 的名字叫做JSESSIONID
package com.rainet.tiis.network; import java.util.Iterator;
import java.util.List;
import java.util.Map; import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils; import android.util.Log; /** * @project: TIIS * @Title: SimpleClient.java * @Package com.rainet.tiis.network * @Description: HTTP请求factory * @author 杨贵松 * @date 2014-3-18 下午12:39:23 * @version V1.0 */
public class SimpleClient { private static HttpParams httpParams; private static DefaultHttpClient httpClient; private static String JSESSIONID; //定义一个静态的字段,保存sessionID /** * @Title: getHttpClient * @author 杨贵松 * @date 2014-3-18 下午1:11:18 * @Description: 获取HttpClient * @return * @throws Exception * HttpClient 返回 */ public static HttpClient getHttpClient() throws Exception { // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的) httpParams = new BasicHttpParams(); // 设置连接超时和 Socket 超时,以及 Socket 缓存大小 HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSocketBufferSize(httpParams, 8192); // 设置重定向,缺省为 true HttpClientParams.setRedirecting(httpParams, true); // 设置 user agent String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6"; HttpProtocolParams.setUserAgent(httpParams, userAgent); // 创建一个 HttpClient 实例 // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient httpClient = new DefaultHttpClient(httpParams); return httpClient; } /** * @Title: doGet * @author 杨贵松 * @date 2014-3-18 下午12:39:58 * @Description: doGet请求 * @param url * @param params * @return * @throws Exception * String 返回 */ @SuppressWarnings("rawtypes") public static String doGet(String url, Map params) throws Exception { /* 建立HTTPGet对象 */ String paramStr = ""; if (params != null) { Iterator iter = params.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); paramStr += paramStr = "&" + key + "=" + val; } } if (!paramStr.equals("")) { paramStr = paramStr.replaceFirst("&", "?"); url += paramStr; } HttpGet httpRequest = new HttpGet(url); String strResult = "doGetError"; /* 发送请求并等待响应 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若状态码为200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 读返回数据 */ strResult = EntityUtils.toString(httpResponse.getEntity()); } else { strResult = "Error Response: " + httpResponse.getStatusLine().toString(); } Log.v("strResult", strResult); return strResult; } /** * @Title: doPost * @author 杨贵松 * @date 2014-3-18 下午12:39:38 * @Description: doPost请求 * @param url * @param params * @return * @throws Exception * String 返回 */ public static String doPost(String url, List<NameValuePair> params) throws Exception { /* 建立HTTPPost对象 */ HttpPost httpRequest = new HttpPost(url); String strResult = "doPostError"; /* 添加请求参数到请求对象 */ if (params != null && params.size() > 0) { httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); } if(null != JSESSIONID){ httpRequest.setHeader("Cookie", "JSESSIONID="+JSESSIONID); } /* 发送请求并等待响应 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若状态码为200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 读返回数据 */ strResult = EntityUtils.toString(httpResponse.getEntity()); /* 获取cookieStore */ CookieStore cookieStore = httpClient.getCookieStore(); List<Cookie> cookies = cookieStore.getCookies(); for(int i=0;i<cookies.size();i++){ //这里是读取Cookie['JSSESSID']的值存在静态变量中,保证每次都是同一个值if("JSESSIONID".equals(cookies.get(i).getName())){ JSESSIONID = cookies.get(i).getValue(); break; } } } Log.v("strResult", strResult); return strResult; } }
(4.1.28.2)HttpPost.setHeader("Cookie", "PHPSESSID=" + PHPSESSID)方式的HttpClient工具类
HttpPost.setHeader(Cookie, PHPSESSID= + PHPSESSID)方式的HttpClient工具类相关推荐
- (4.1.28.2)HttpPost.setHeader(Cookie, PHPSESSID= + PHPSESSID)方式的HttpClient工具类
session 在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一 个不变就可以用到web的session ...
- HttpClient工具类及应用
Content-Type类型: 常见的媒体格式类型如下: text/html : HTML格式 text/plain :纯文本格式 text/xml : XML格式 image/gif :gif图片格 ...
- Java开发小技巧(五):HttpClient工具类
前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...
- HttpClient工具类
HttpClient工具类 package cn.sh.steven.httpclient;import com.alibaba.fastjson.JSON; import com.alibaba.f ...
- 14、阿里云短信Demo演示、Http的Get请求和Post请求演示、httpClient工具类演示、发送短信模块搭建、搭建用户中心模块、完成user注册基本功能、验证码存入redis、短信验证码注册
阿里云短信Demo演示 一.前端部分 无前端. 二.后端部分 1.创建发送短信测试模块SmsSendDemo,不用使用骨架. 2.在pom文件中引入依赖坐标 <dependency>< ...
- apache httpclient 工具类_HttpClient 和Mycat 主从节点和读写分离
第175次(HttpClient) 学习主题:HttpClient 学习目标: 1 掌握HttpClient自定义工具以及HttpClient具体的使用 对应视频: http://www.itbaiz ...
- 使用单例模式实现自己的HttpClient工具类
本文转载自:http://www.cnblogs.com/codingmyworld/archive/2011/08/17/2141706.html 使用单例模式实现自己的HttpClient工具类 ...
- 工具类-httpClient工具类
httpClient工具类 1.httpClient工具类(http/https.重发.超时.连接数的设置) package com.xxxxxxx.xxxx.xxxx.payutil;import ...
- HttpClient工具类封装
HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议.HttpCli ...
最新文章
- 近期活动盘点:2018数据与媒介发展论坛、大数据应用中日交流论坛(11.04-11.15)...
- OpenGL RGTC Compressor压缩实例
- QT的QQuickImageProvider类的使用
- swingbench oracle rac,使用Swingbench压力测试Oracle RAC
- Freescale MC9S08AW60汇编学习笔记(五)
- 413 Request Entity Too Large
- JAVA回调函数的例子_javascript : 回调函数例子
- Blizzard Transitions for Mac - 动态风雪过渡效果FCPX转场
- CodeVS 3027 线段覆盖2(DP)
- python3的文件读写模式
- vba判断是否为数字的方法小集
- 台式机就是指什么的计算机,什么是台式机操作系统
- 哈工大ltp词性标注列表和ICTCLAS词性列表
- 一款游戏让你成为 Vim 高手!
- 2020前端最新面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)(3年前端菜鸟级开发师含泪总结)
- 目标-过程-结果经验分享及OKR工作法
- 通俗理解 set,dict 背后的哈希表
- Linux下的QQ客户端EVA初试以及ibus输入法问题的解决方法
- Power Automate:发送带有SharePoint列表附件的邮件
- vue 踩坑笔记 二.vue引入阿里矢量图库的矢量图