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简单http get请求(含服务器端)一

andriod登陆界面含服务器端
  • nothingl3
  • nothingl3
  • 2015年03月10日 16:30
  • 1039

Android 原生代码实现网络请求

本文导读 使用URL访问网络资源:下载图片 使用URLConnection进行网络请求:GET&POST 使用HttpURLConnection进行网络请求:GET&POST 原生代码实现及解析:注释...
  • DeMonliuhui
  • DeMonliuhui
  • 2017年05月09日 14:01
  • 2207

android实现session保持【以及web登陆保持】

对于登录功能本身没有任何特别,使用httpclient向服务器post用户名密码即可。 但是为了保持登录的状态(在各个Activity之间切换时要让网站知道用户一直是处于登录的状态)就需要进行coo...
  • nolouch
  • nolouch
  • 2014年07月07日 15:10
  • 2789

android学习笔记之客户端与服务端保持session登录状态

android新手入门,关于如何使用session保持用户登录状态,以及如何将服务端返回的JSONArray数据转换成List类型用于绑定显示到ListView中。...
  • qq12547345
  • qq12547345
  • 2015年08月21日 18:06
  • 3577

Android客户端访问服务器保持SESSION会话的实现

大家在电脑上登录网上购物商城的时候购物,先进行登录,输入用户名密码,然后看到自己中意的商品就点开它的详情页面查看详细参数,然后决定买不买,在打开详情页面的时候,页面已经实现了跳转,那么第二个页面是服务...
  • yaochangliang159
  • yaochangliang159
  • 2015年12月30日 12:01
  • 9286

android实现登录一次,之后不需要登录的方法token,session,sharedpreference

项目要求android端游客可以随意使用很多板块,但有些板块需要登录,只要用户登录后其余地方就不需要登录了。 一开始,想到了web层的session,所以查了下,有人说可以,就是这么用,但后来又查到...
  • u010127245
  • u010127245
  • 2016年06月24日 20:21
  • 5282

android 集合SSH客户端实现登录,并保持session访问服务端数据

  • 2014年12月15日 17:44
  • 1.66MB
  • 下载

Android 实现 session 保持

最近在开发项目的过程中,遇到 android 与 web 服务器要在同一 session 下通信的问题。先来了解一下 session 机制 和 session 的实现方式: Sess...
  • qq_35114086
  • qq_35114086
  • 2016年08月30日 22:35
  • 6104

android获取web服务器端session并验证登陆

android获取web服务器端session并验证登陆 18,484 views Posted on June 13, 2011 by Charlie  Posted in an...
  • u013390656
  • u013390656
  • 2014年08月15日 10:10
  • 996

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

package com.rainet.tiis.network; import java.util.Iterator; import java.util.List; import java.util...
  • yang_734664103
  • yang_734664103
  • 2014年03月25日 05:29
  • 32381
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 通过httpclient请求web服务器,并解决用户登录session保持
举报原因:
原因补充:

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