增加一个类
3
import java.io.IOException;
4
import java.net.InetAddress;
5
import java.net.InetSocketAddress;
6
import java.net.Socket;
7
import java.net.SocketAddress;
8
import java.net.UnknownHostException;
9
import java.security.KeyManagementException;
10
import java.security.NoSuchAlgorithmException;
11
import java.security.cert.CertificateException;
12
import java.security.cert.X509Certificate;
13
14
import javax.net.SocketFactory;
15
import javax.net.ssl.SSLContext;
16
import javax.net.ssl.TrustManager;
17
import javax.net.ssl.X509TrustManager;
18
19
import org.apache.commons.httpclient.ConnectTimeoutException;
20
import org.apache.commons.httpclient.params.HttpConnectionParams;
21
import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
22
23
public class MySSLSocketFactory implements SecureProtocolSocketFactory {
24
static{
25
System.out.println("loading SSL
");
26
}
27
private SSLContext sslcontext = null;
28
29
private SSLContext createSSLContext() {
30
SSLContext sslcontext=null;
31
try {
32
sslcontext = SSLContext.getInstance("SSL");
33
sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
34
} catch (NoSuchAlgorithmException e) {
35
e.printStackTrace();
36
} catch (KeyManagementException e) {
37
e.printStackTrace();
38
}
39
return sslcontext;
40
}
41
42
private SSLContext getSSLContext() {
43
if (this.sslcontext == null) {
44
this.sslcontext = createSSLContext();
45
}
46
return this.sslcontext;
47
}
48
49
public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
50
throws IOException, UnknownHostException {
51
return getSSLContext().getSocketFactory().createSocket(
52
socket,
53
host,
54
port,
55
autoClose
56
);
57
}
58
59
public Socket createSocket(String host, int port) throws IOException,
60
UnknownHostException {
61
return getSSLContext().getSocketFactory().createSocket(
62
host,
63
port
64
);
65
}
66
67
68
public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort)
69
throws IOException, UnknownHostException {
70
return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort);
71
}
72
73
public Socket createSocket(String host, int port, InetAddress localAddress,
74
int localPort, HttpConnectionParams params) throws IOException,
75
UnknownHostException, ConnectTimeoutException {
76
if (params == null) {
77
throw new IllegalArgumentException("Parameters may not be null");
78
}
79
int timeout = params.getConnectionTimeout();
80
SocketFactory socketfactory = getSSLContext().getSocketFactory();
81
if (timeout == 0) {
82
return socketfactory.createSocket(host, port, localAddress, localPort);
83
} else {
84
Socket socket = socketfactory.createSocket();
85
SocketAddress localaddr = new InetSocketAddress(localAddress, localPort);
86
SocketAddress remoteaddr = new InetSocketAddress(host, port);
87
socket.bind(localaddr);
88
socket.connect(remoteaddr, timeout);
89
return socket;
90
}
91
}
92
93
//自定义私有类
94
private static class TrustAnyTrustManager implements X509TrustManager {
95
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
96
}
97
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
98
}
99
public X509Certificate[] getAcceptedIssuers() {
100
return new X509Certificate[]{};
101
}
102
}
103
104
}
105
import java.io.IOException;4
import java.net.InetAddress;5
import java.net.InetSocketAddress;6
import java.net.Socket;7
import java.net.SocketAddress;8
import java.net.UnknownHostException;9
import java.security.KeyManagementException;10
import java.security.NoSuchAlgorithmException;11
import java.security.cert.CertificateException;12
import java.security.cert.X509Certificate;13

14
import javax.net.SocketFactory;15
import javax.net.ssl.SSLContext;16
import javax.net.ssl.TrustManager;17
import javax.net.ssl.X509TrustManager;18

19
import org.apache.commons.httpclient.ConnectTimeoutException;20
import org.apache.commons.httpclient.params.HttpConnectionParams;21
import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;22

23
public class MySSLSocketFactory implements SecureProtocolSocketFactory {24
static{25
System.out.println("loading SSL
");26
}27
private SSLContext sslcontext = null;28
29
private SSLContext createSSLContext() {30
SSLContext sslcontext=null;31
try {32
sslcontext = SSLContext.getInstance("SSL");33
sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());34
} catch (NoSuchAlgorithmException e) {35
e.printStackTrace();36
} catch (KeyManagementException e) {37
e.printStackTrace();38
}39
return sslcontext;40
}41
42
private SSLContext getSSLContext() {43
if (this.sslcontext == null) {44
this.sslcontext = createSSLContext();45
}46
return this.sslcontext;47
}48
49
public Socket createSocket(Socket socket, String host, int port, boolean autoClose)50
throws IOException, UnknownHostException {51
return getSSLContext().getSocketFactory().createSocket(52
socket,53
host,54
port,55
autoClose56
);57
}58

59
public Socket createSocket(String host, int port) throws IOException,60
UnknownHostException {61
return getSSLContext().getSocketFactory().createSocket(62
host,63
port64
);65
}66
67
68
public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort)69
throws IOException, UnknownHostException {70
return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort);71
}72

73
public Socket createSocket(String host, int port, InetAddress localAddress,74
int localPort, HttpConnectionParams params) throws IOException,75
UnknownHostException, ConnectTimeoutException {76
if (params == null) {77
throw new IllegalArgumentException("Parameters may not be null");78
}79
int timeout = params.getConnectionTimeout();80
SocketFactory socketfactory = getSSLContext().getSocketFactory();81
if (timeout == 0) {82
return socketfactory.createSocket(host, port, localAddress, localPort);83
} else {84
Socket socket = socketfactory.createSocket();85
SocketAddress localaddr = new InetSocketAddress(localAddress, localPort);86
SocketAddress remoteaddr = new InetSocketAddress(host, port);87
socket.bind(localaddr);88
socket.connect(remoteaddr, timeout);89
return socket;90
}91
}92
93
//自定义私有类94
private static class TrustAnyTrustManager implements X509TrustManager {95
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {96
}97
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {98
}99
public X509Certificate[] getAcceptedIssuers() {100
return new X509Certificate[]{};101
}102
}103

104
}105

调用即可
if(postUrl.startsWith("https://"))
{
//注册https
Protocol myhttps = new Protocol("https", new MySSLSocketFactory (), 443);
Protocol.registerProtocol("https", myhttps);
}
HttpClient httpClient = new HttpClient();
httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charset);
