new对象的时候 后面加个{ @override }可以简便的实现重写
重写SSLSocketFactory的connect方法
于是有了下面的代码(注释的部分就是之前的代码):
SSLContext sslcontext = SSLContext.getInstance("SSL");
sslcontext.init(null, new TrustManager[] { truseAllManager }, null);
//SSLSocketFactory sf = new SSLSocketFactory(sslcontext,
// SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
SSLSocketFactory sf = new SSLSocketFactory(sslcontext,
SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER){
@Override
public Socket connectSocket (
final Socket socket,
final InetSocketAddress remoteAddress,
final InetSocketAddress localAddress,
final HttpParams params) throws IOException, UnknownHostException, ConnectTimeoutException {
logger.error("sockaddress remoteAddress:"+remoteAddress);
logger.error("sockaddress localAddress:"+localAddress);
return super.connectSocket(socket,
remoteAddress, localAddress, params);
}
};
Scheme https = new Scheme("https", 443, sf);
httpclient.getConnectionManager().getSchemeRegistry()
.register(https);