Android 通过httpclient请求web服务器,并解决用户登录session保持

转载 2016年08月31日 12:07:50
  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.                 if("JSESSIONID".equals(cookies.get(i).getName())){  
  144.                     JSESSIONID = cookies.get(i).getValue();  
  145.                     break;  
  146.                 }  
  147.             }  
  148.         }  
  149.         Log.v("strResult", strResult);  
  150.         return strResult;  
  151.     }  
  152.   

相关文章推荐

Android 通过httpclient请求web服务器,并解决用户登录session保持

package com.rainet.tiis.network; import java.util.Iterator; import java.util.List; import java.util...

android获取jsessionId和发送jsessionId

做过web开发的人都知道web有一个session来保持

android中HttpClient获取Session然后使用 WebView共享session的解决办法

android开始项目中,通常会遇到既使用HttpClient,又使用WebView的情况。一个典型的例子是,使用HttpClient登录,WebView展示登录后的某些页面,这个时候,如果直接不加任...

06_android入门_采用HttpURLConnection的POST方式实现登陆案例

1.继续采用  03_android入门_采用RelativeLayout实现登陆界面

Android网络编程之Http请求服务器数据(POST方式)

Android中的网络请求主要有GET和POST方式。POST方式比GET方式更为安全,因为需要发送的消息不是嵌入在url中的,同时能比GET发送更多的数据。       本文讨论使用POST方式向聚...

Android使用HttpUrlConnection请求服务器发送数据详解

版权声明:本文为博主原创文章,未经博主允许不得转载。转载注明出处:Sunzxyong HttpUrlConnection是java内置的api,在java.net包下,那么,它请求网络同样也有get...

Android客户端请求服务器端的详细解释(附源代码)

Android客户端请求服务器端的详细解释1. Android客户端与服务器端通信方式: Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和po...

Android网络编程之Http请求服务器数据(GET方式)

进行Android应用开发,其中不得不使用到网络编程,最基本的就是向服务器发送Http请求,并接收从服务器返回的数据,该类数据一般为JSON或XML格式。         向服务器进行请求数据一般有G...

Android服务器与客户端数据交互(Http协议)

Android与服务器通信通常采用的是HTTP通信方式和Socket通信方式,本章主要介绍HTTP协议。

RxAndroid 与OkHttpClient打造下载实例

一、概述:1.替代asyncTask完成下载任务 2.结合okhttp完成网络访问,包括文件下载,提交表单 3.结合listview,gridview使用完成图文混合操作 4.结合okhttp访...
  • lovoo
  • lovoo
  • 2016-07-15 23:28
  • 1784
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)