Android httpリクエストクラスCookie追加
10294 ワード
package com.test.app;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.SocketTimeoutException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
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.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
import android.annotation.SuppressLint;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.StrictMode;
import android.util.Log;
/**
*
*
* @author Administrator
*
*/
public class HttpClientTool {
public String TIME_OUT = " ";
public int time = 20000;
/** cokie */
private static CookieStore uCookie = null;
/** **/
private Context context;
public HttpClientTool(Context context) {
this.context = context;
}
public CookieStore getuCookie() {
return uCookie;
}
public void setuCookie(CookieStore uCookie) {
this.uCookie = uCookie;
}
/** 、 、 **/
private Header[] getHeader() {
/** end **/
MyHttpCookies li = new MyHttpCookies(context);
return li.getHttpHeader();
}
/**
* -- param .
*
* @param params
* @param url
* @return
*/
public String doPost(List<NameValuePair> params, String url) {
network();
String result = null;
HttpPost httpPost = new HttpPost(url);
httpPost.setHeaders(this.getHeader());
System.out.println("---->url=" + url);
DefaultHttpClient httpClient = new DefaultHttpClient();
try {
httpPost.setEntity(new UrlEncodedFormEntity(params));
/** Session **/
/** Cookie **/
MyHttpCookies li = new MyHttpCookies(context);
CookieStore cs = li.getuCookie();
/** App Cookie , , APP Cookie 。 Cooke **/
if (cs != null) {
httpClient.setCookieStore(li.getuCookie());
}
/** Session end **/
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, time);
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, time);
HttpResponse httpResp = httpClient.execute(httpPost);
if (httpResp.getStatusLine().getStatusCode() == 200) {
result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i("HttpPost", "HttpPost , :");
Log.i("result", result);
/** **/
/** Cookis APP **/
// , Cookis。 Cookis
li.setuCookie(httpClient.getCookieStore());
/** Cookie end **/
} else {
Log.i("HttpPost", "HttpPost ");
System.out.println("0000===>" + EntityUtils.toString(httpResp.getEntity(), "UTF-8"));
result = "{status:'0',message:' '}";
}
} catch (SocketTimeoutException e) {
result = "{status:'0',message:'" + TIME_OUT + "'}";
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
result = "{status:'0',message:' '}";
e.printStackTrace();
} catch (ClientProtocolException e) {
result = "{status:'0',message:' '}";
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpPost.abort();
httpClient.getConnectionManager().shutdown();
}
return result;
}
/**
* , .
*
* @param url
* @return
*/
public String doPost(String url) {
network();
String result = null;
HttpPost httpPost = new HttpPost(url);
httpPost.setHeaders(this.getHeader());
System.out.println("---->url=" + url);
DefaultHttpClient httpClient = new DefaultHttpClient();
try {
/** Session **/
/** Cookie **/
MyHttpCookies li = new MyHttpCookies(context);
CookieStore cs = li.getuCookie();
/** App Cookie , , APP Cookie 。 Cooke **/
if (cs != null) {
httpClient.setCookieStore(li.getuCookie());
}
/** Session end **/
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, time);
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, time);
HttpResponse httpResp = httpClient.execute(httpPost);
if (httpResp.getStatusLine().getStatusCode() == 200) {
result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i("HttpPost", "HttpPost , :");
Log.i("result", result);
/** **/
/** Cookis APP **/
// , Cookis。 Cookis
li.setuCookie(httpClient.getCookieStore());
/** Cookie end **/
} else {
Log.i("HttpPost", "HttpPost ");
System.out.println("0000===>" + EntityUtils.toString(httpResp.getEntity(), "UTF-8"));
result = "{success:false,msg:' '}";
}
} catch (SocketTimeoutException e) {
result = "{status:'0',message:'" + TIME_OUT + "'}";
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
result = "{status:'0',message:' '}";
e.printStackTrace();
} catch (ClientProtocolException e) {
result = "{status:'0',message:' '}";
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* get url
*
* @param url
* @param params
* @return
*/
public String doGet(List<NameValuePair> params, String url) {
/** HTTPGet **/
String paramStr = "";
if (params == null)
params = new ArrayList<NameValuePair>();
/** **/
for (NameValuePair obj : params) {
paramStr += paramStr = "&" + obj.getName() + "=" + URLEncoder.encode(obj.getValue());
}
if (!paramStr.equals("")) {
paramStr = paramStr.replaceFirst("&", "?");
url += paramStr;
}
System.out.println("do_get_url ==== >" + url);
return doGet(url);
}
/**
* GET doGet :
*
* @param url
*
* @return String jsonResult;
*
*/
public String doGet(String url) {
System.out.println("url===>" + url);
network();
/** HttpGet **/
HttpGet httpGet = new HttpGet(url);
httpGet.setHeaders(this.getHeader());
DefaultHttpClient httpClient = new DefaultHttpClient();
String result;
try {
/** Session **/
/** Cookie **/
MyHttpCookies li = new MyHttpCookies(context);
CookieStore cs = li.getuCookie();
/** App Cookie , , APP Cookie 。 Cooke **/
if (cs != null) {
httpClient.setCookieStore(li.getuCookie());
}
/** Session end **/
/* */
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, time);
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, time);
HttpResponse httpResponse = httpClient.execute(httpGet);
/* 200 ok */
if (httpResponse.getStatusLine().getStatusCode() == 200) {
/* */
result = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
Log.i("HttpPost", "HttpGet , :");
Log.i("result", result);
li.setuCookie(httpClient.getCookieStore());
} else {
Log.i("HttpPost", "HttpGet ");
result = "{status:'0',message:' '}";
System.out.println("0000===>" + EntityUtils.toString(httpResponse.getEntity(), "UTF-8"));
}
} catch (ClientProtocolException e) {
result = e.getMessage();
e.printStackTrace();
} catch (IOException e) {
result = e.getMessage();
e.printStackTrace();
} catch (Exception e) {
result = e.getMessage();
httpGet.abort();
// HttpClient
httpClient.getConnectionManager().shutdown();
}
return result;
}
@SuppressLint("NewApi")
private void network() {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.build());
}
}
/**
* 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;
}
}