package com.tpyg.busserver.utils; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.net.wifi.WifiManager; import org.apache.http.Header; import org.apache.http.client.CookieStore; import org.apache.http.message.BasicHeader; /** * http请求的缓存和一些公用的参数 * * @author Administrator */ class MyHttpCookies { /** 每页数据显示最大数 */ private static int pageSize = 10; /** 当前会话后的cokie信息 */ private static CookieStore uCookie = null; /** 公用的HTTP提示头信息 */ private static Header[] httpHeader; /** HTTP连接的网络节点 */ private static String httpProxyStr; /** http请求的公用url部分 **/ public static String baseurl = "http://www.2cto.com /River"; /** 上下文对象 **/ Context context; public MyHttpCookies(Context context) { this.context = context; /** y设置请求头 **/ /** y设置请求头 **/ Header[] header = {new BasicHeader("PagingRows", String.valueOf(pageSize))}; httpHeader = header; } /** * 增加自动选择网络,自适应cmwap、CMNET、wifi或3G */ @SuppressWarnings("static-access") public void initHTTPProxy() { WifiManager wifiManager = (WifiManager) (context.getSystemService(context.WIFI_SERVICE)); if (!wifiManager.isWifiEnabled()) { Uri uri = Uri.parse("content://telephony/carriers/preferapn"); // 获取当前正在使用的APN接入点 Cursor mCursor = context.getContentResolver().query(uri, null, null, null, null); if (mCursor != null) { mCursor.moveToNext(); // 游标移至第一条记录,当然也只有一条 httpProxyStr = mCursor.getString(mCursor.getColumnIndex("proxy")); } } else { httpProxyStr = null; } } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public CookieStore getuCookie() { return uCookie; } public void setuCookie(CookieStore uCookie) { this.uCookie = uCookie; } public Header[] getHttpHeader() { return httpHeader; } public String getHttpProxyStr() { return httpProxyStr; } }
/** * 访问业务服务器. * * @param url * @param paramsMap * @return */ public static String post(String url, Map<String, String> paramsMap) { DefaultHttpClient client = new DefaultHttpClient(); String responseText = ""; HttpResponse response = null; try { /** 保持会话Session **/ /** 设置Cookie **/ MyHttpCookies li = new MyHttpCookies(ChatApplication.getInstance()); CookieStore cs = li.getuCookie(); /** 第一次请求App保存的Cookie为空,所以什么也不做,只有当APP的Cookie不为空的时。把请请求的Cooke放进去 **/ if (cs != null) { client.setCookieStore(li.getuCookie()); } HttpPost method = new HttpPost(url); if (paramsMap == null) { paramsMap = new HashMap<String, String>(); } paramsMap.put("accessToken", AppManager.accessToken); List<NameValuePair> paramList = new ArrayList<NameValuePair>(); for (Map.Entry<String, String> param : paramsMap.entrySet()) { NameValuePair pair = new BasicNameValuePair(param.getKey(), param.getValue()); paramList.add(pair); } //第一次一般是还未被赋值,若有值则将SessionId发给服务器 method.setEntity(new UrlEncodedFormEntity(paramList, "UTF-8")); client.getParams().setParameter( CoreConnectionPNames.CONNECTION_TIMEOUT, 5000); response = client.execute(method); if (response.getStatusLine().getStatusCode() == 200) { /* 获取cookieStore */ CookieStore cookieStore = client.getCookieStore(); li.setuCookie(cookieStore); } HttpEntity entity = response.getEntity(); if (entity != null) { responseText = EntityUtils.toString(entity); } } catch (Exception e) { e.printStackTrace(); } finally { try { client.getConnectionManager().shutdown(); } catch (Exception e) { e.printStackTrace(); } } return responseText; }