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;
}
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] chain, String authType)
throws java.security.cert.CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] chain, String authType)
throws java.security.cert.CertificateException {
}
};
sslContext.init(null, new TrustManager[] { tm }, null);
}
@Override
public Socket createSocket(Socket socket, String host, int port,
boolean autoClose) throws IOException, UnknownHostException {
return sslContext.getSocketFactory().createSocket(socket, host, port,
autoClose);
}
@Override
public 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) {
// 拼接Url
StringBuffer 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