Android中使用HttpClient

来源:互联网 发布:软件体系结构的选择 编辑:程序博客网 时间:2024/06/02 15:41

SSLSocketFactoryEx 类

package com.momting.utils;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;import java.security.KeyManagementException;import java.security.KeyStore;import java.security.KeyStoreException;import java.security.NoSuchAlgorithmException;import java.security.UnrecoverableKeyException;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import org.apache.http.conn.ssl.SSLSocketFactory;public class SSLSocketFactoryEx extends SSLSocketFactory {SSLContext sslContext = SSLContext.getInstance("TLS");public SSLSocketFactoryEx(KeyStore truststore)throws NoSuchAlgorithmException, KeyManagementException,KeyStoreException, UnrecoverableKeyException {super(truststore);TrustManager tm = new X509TrustManager() {public java.security.cert.X509Certificate[] getAcceptedIssuers() {return null;}@Overridepublic void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)throws java.security.cert.CertificateException {}@Overridepublic void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)throws java.security.cert.CertificateException {}};sslContext.init(null, new TrustManager[] { tm }, null);}@Overridepublic Socket createSocket(Socket socket, String host, int port,boolean autoClose) throws IOException, UnknownHostException {return sslContext.getSocketFactory().createSocket(socket, host, port,autoClose);}@Overridepublic Socket createSocket() throws IOException {return sslContext.getSocketFactory().createSocket();}}

获取HttpClicent

/** * 获取HttpClient 可用于https请求 *  * @return */private static HttpClient getHttpClient() {try {KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());trustStore.load(null, null);SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore);sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);HttpParams params = new BasicHttpParams();HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);SchemeRegistry registry = new SchemeRegistry();registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));registry.register(new Scheme("https", sf, 443));ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);return new DefaultHttpClient(ccm, params);} catch (Exception e) {return new DefaultHttpClient();}}


 

 

Request请求

/** *  * @param url *            请求地址 * @param params *            参数 */public static String getRequest(String url, Map<String, Object> params) {// 拼接UrlStringBuffer sb = new StringBuffer(url);if (sb.indexOf("?") < 0)sb.append("?");for (String name : params.keySet()) {sb.append('&');sb.append(name);sb.append('=');sb.append(String.valueOf(params.get(name)));}HttpClient client = getHttpClient();try {HttpGet get = new HttpGet(sb.toString());// Log.d(TAG, "executing request" + get.getURI());// 执行get请求HttpResponse response = client.execute(get);// 获取响应实体HttpEntity entity = response.getEntity();// 获取响应码int statusCode = response.getStatusLine().getStatusCode();if (statusCode == 200) {// 获取响应内容长度// Log.d(TAG, "响应内容长度" + entity.getContentLength());return EntityUtils.toString(entity, "utf-8");}} catch (Exception e) {e.printStackTrace();Log.d(TAG, "请求错误" + e.toString());} finally {// 关闭连接 释放资源client.getConnectionManager().shutdown();}return null;};


post请求

/** * post请求 *  * @param url * @param params * @return */public static String postRequest(String url,LinkedList<BasicNameValuePair> params) {HttpClient client = getHttpClient();try {HttpPost post = new HttpPost(url);//post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));HttpResponse response = client.execute(post);HttpEntity entity = response.getEntity();int statusCode = response.getStatusLine().getStatusCode();if (statusCode == 200) {// 获取响应内容长度// Log.d(TAG, "响应内容长度" + entity.getContentLength());return EntityUtils.toString(entity, "utf-8");}} catch (Exception e) {e.printStackTrace();} finally {// 关闭连接 释放资源client.getConnectionManager().shutdown();}return null;}

参考:http://ipjmc.iteye.com/blog/1577495


 

 

原创粉丝点击