(4.1.28.2)HttpPost.setHeader("Cookie", "PHPSESSID=" + PHPSESSID)方式的HttpClient工具类

来源:互联网 发布:魅影传说坐骑进阶数据 编辑:程序博客网 时间:2024/04/30 18:13


session 在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一 个不变就可以用到web的session了,做法是第一次数据请求时就获取sessionid的值并保存在一个静态变量中,然后在第二次请求数据的时候要 将这个sessionid一并放在Cookie中发给服务器,服务器则是通过这个sessionid来识别究竟是那个客户端在请求数据的,在php中这个 sessionid的名字叫做PHPSESSID。 在java 下sessionid 的名字叫做JSESSIONID  


[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.rainet.tiis.network;  
  2.   
  3. import java.util.Iterator;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7. import org.apache.http.HttpResponse;  
  8. import org.apache.http.NameValuePair;  
  9. import org.apache.http.client.CookieStore;  
  10. import org.apache.http.client.HttpClient;  
  11. import org.apache.http.client.entity.UrlEncodedFormEntity;  
  12. import org.apache.http.client.methods.HttpGet;  
  13. import org.apache.http.client.methods.HttpPost;  
  14. import org.apache.http.client.params.HttpClientParams;  
  15. import org.apache.http.cookie.Cookie;  
  16. import org.apache.http.impl.client.DefaultHttpClient;  
  17. import org.apache.http.params.BasicHttpParams;  
  18. import org.apache.http.params.HttpConnectionParams;  
  19. import org.apache.http.params.HttpParams;  
  20. import org.apache.http.params.HttpProtocolParams;  
  21. import org.apache.http.protocol.HTTP;  
  22. import org.apache.http.util.EntityUtils;  
  23.   
  24. import android.util.Log;  
  25.   
  26. /** 
  27.  * @project:                    TIIS  
  28.  * @Title:                      SimpleClient.java        
  29.  * @Package                     com.rainet.tiis.network      
  30.  * @Description:                HTTP请求factory 
  31.  * @author                      杨贵松    
  32.  * @date                        2014-3-18 下午12:39:23  
  33.  * @version                     V1.0 
  34.  */  
  35. public class SimpleClient {  
  36.     private static HttpParams httpParams;  
  37.     private static DefaultHttpClient httpClient;  
  38.     private static String JSESSIONID; //定义一个静态的字段,保存sessionID  
  39.   
  40.     /** 
  41.      * @Title:              getHttpClient  
  42.      * @author              杨贵松 
  43.      * @date                2014-3-18 下午1:11:18 
  44.      * @Description:        获取HttpClient 
  45.      * @return 
  46.      * @throws Exception  
  47.      * HttpClient               返回 
  48.      */  
  49.     public static HttpClient getHttpClient() throws Exception {  
  50.         // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的)  
  51.         httpParams = new BasicHttpParams();  
  52.         // 设置连接超时和 Socket 超时,以及 Socket 缓存大小  
  53.         HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000);  
  54.         HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000);  
  55.         HttpConnectionParams.setSocketBufferSize(httpParams, 8192);  
  56.         // 设置重定向,缺省为 true  
  57.         HttpClientParams.setRedirecting(httpParams, true);  
  58.         // 设置 user agent  
  59.         String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6";  
  60.         HttpProtocolParams.setUserAgent(httpParams, userAgent);  
  61.         // 创建一个 HttpClient 实例  
  62.         // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient  
  63.         // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient  
  64.         httpClient = new DefaultHttpClient(httpParams);  
  65.         return httpClient;  
  66.     }  
  67.   
  68.     /** 
  69.      * @Title:              doGet  
  70.      * @author              杨贵松 
  71.      * @date                2014-3-18 下午12:39:58 
  72.      * @Description:        doGet请求 
  73.      * @param url 
  74.      * @param params 
  75.      * @return 
  76.      * @throws Exception  
  77.      * String               返回 
  78.      */  
  79.     @SuppressWarnings("rawtypes")  
  80.     public static String doGet(String url, Map params) throws Exception {  
  81.         /* 建立HTTPGet对象 */  
  82.         String paramStr = "";  
  83.         if (params != null) {  
  84.             Iterator iter = params.entrySet().iterator();  
  85.             while (iter.hasNext()) {  
  86.                 Map.Entry entry = (Map.Entry) iter.next();  
  87.                 Object key = entry.getKey();  
  88.                 Object val = entry.getValue();  
  89.                 paramStr += paramStr = "&" + key + "=" + val;  
  90.             }  
  91.         }  
  92.         if (!paramStr.equals("")) {  
  93.             paramStr = paramStr.replaceFirst("&""?");  
  94.             url += paramStr;  
  95.         }  
  96.         HttpGet httpRequest = new HttpGet(url);  
  97.         String strResult = "doGetError";  
  98.         /* 发送请求并等待响应 */  
  99.         HttpResponse httpResponse = httpClient.execute(httpRequest);  
  100.         /* 若状态码为200 ok */  
  101.         if (httpResponse.getStatusLine().getStatusCode() == 200) {  
  102.             /* 读返回数据 */  
  103.             strResult = EntityUtils.toString(httpResponse.getEntity());  
  104.         } else {  
  105.             strResult = "Error Response: " + httpResponse.getStatusLine().toString();  
  106.         }  
  107.         Log.v("strResult", strResult);  
  108.         return strResult;  
  109.     }  
  110.   
  111.     /** 
  112.      * @Title:              doPost  
  113.      * @author              杨贵松 
  114.      * @date                2014-3-18 下午12:39:38 
  115.      * @Description:        doPost请求 
  116.      * @param url 
  117.      * @param params 
  118.      * @return 
  119.      * @throws Exception  
  120.      * String               返回 
  121.      */  
  122.     public static String doPost(String url, List<NameValuePair> params) throws Exception {  
  123.         /* 建立HTTPPost对象 */  
  124.         HttpPost httpRequest = new HttpPost(url);  
  125.         String strResult = "doPostError";  
  126.         /* 添加请求参数到请求对象 */  
  127.         if (params != null && params.size() > 0) {  
  128.             httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));  
  129.         }  
  130.         if(null != JSESSIONID){  
  131.             httpRequest.setHeader("Cookie""JSESSIONID="+JSESSIONID);  
  132.         }  
  133.         /* 发送请求并等待响应 */  
  134.         HttpResponse httpResponse = httpClient.execute(httpRequest);  
  135.         /* 若状态码为200 ok */  
  136.         if (httpResponse.getStatusLine().getStatusCode() == 200) {  
  137.             /* 读返回数据 */  
  138.             strResult = EntityUtils.toString(httpResponse.getEntity());  
  139.             /* 获取cookieStore */  
  140.             CookieStore cookieStore = httpClient.getCookieStore();  
  141.             List<Cookie> cookies = cookieStore.getCookies();  
  142.             for(int i=0;i<cookies.size();i++){  
  143. //这里是读取Cookie['JSSESSID']的值存在静态变量中,保证每次都是同一个值
  144.                 if("JSESSIONID".equals(cookies.get(i).getName())){  
  145.                     JSESSIONID = cookies.get(i).getValue();  
  146.                     break;  
  147.                 }  
  148.             }  
  149.         }  
  150.         Log.v("strResult", strResult);  
  151.         return strResult;  
  152.     }  
  153.   
  154. }  

0 0
原创粉丝点击