httpclient4.5 https请求 忽略身份验证 自定义忽略的协议
2018-11-24 10:15
671 查看
[code] import java.nio.charset.Charset; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.config.ConnectionConfig; import org.apache.http.config.Registry; import org.apache.http.config.RegistryBuilder; import org.apache.http.config.SocketConfig; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.LayeredConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.TrustStrategy; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.ssl.SSLContextBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class HttpClientConfig { private static SSLContextBuilder builder = null; static { try { builder = new SSLContextBuilder(); builder.loadTrustMaterial(null, (TrustStrategy)(x509Certificates, s) -> true); } catch (Exception e) { e.printStackTrace(); } } @Bean(destroyMethod = "shutdown") public PoolingHttpClientConnectionManager poolingHttpClientConnectionManager() throws KeyManagementException, NoSuchAlgorithmException { LayeredConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(builder.build(), new String[]{"SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.2"}, null, NoopHostnameVerifier.INSTANCE);; Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create() .register("https", sslsf) .register("http", new PlainConnectionSocketFactory()) .build(); SocketConfig socketConfig = SocketConfig.copy(SocketConfig.DEFAULT).setSoKeepAlive(true).setTcpNoDelay(true).setSoTimeout(10000).build(); ConnectionConfig connectionConfig = ConnectionConfig.copy(ConnectionConfig.DEFAULT).setCharset(Charset.forName("UTF-8")).build(); PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); connectionManager.setMaxTotal(200); connectionManager.setDefaultMaxPerRoute(20); connectionManager.setDefaultSocketConfig(socketConfig); connectionManager.setDefaultConnectionConfig(connectionConfig); return connectionManager; } @Bean public HttpClient httpClient(PoolingHttpClientConnectionManager connectionManager){ RequestConfig requestConfig = RequestConfig.copy(RequestConfig.DEFAULT).setConnectTimeout(10000).setConnectionRequestTimeout(10000).build(); return HttpClients .custom().setConnectionManager(connectionManager).setDefaultRequestConfig(requestConfig).build(); } }
[code]"SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.2" 是自定义要忽略的协议,可以根据具体情况指定
使用时注入httpClient:
[code] HttpPost post = new HttpPost(smsConfig.getServerUrl()); Sms253SendRequest sms253SendRequest = new Sms253SendRequest(this.smsConfig.getAccount(), this.smsConfig.getPassword(), message, phone); post.setEntity(new ByteArrayEntity(JSON.toJSONString(sms253SendRequest).getBytes("UTF-8"), ContentType.APPLICATION_JSON)); HttpResponse response = this.httpClient.execute(post);
相关文章推荐
- httpclient4.5 https请求 忽略身份验证
- httpclient4.5 https、http请求 忽略身份验证
- 使用自定义证书并忽略验证的HTTPS连接Post请求方式的封装
- httpclient忽略证书验证允许https请求
- HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Negotiate,NTLM”。
- jdk1.6 支持 tls1.1 1.2协议 并忽略身份验证
- httpclient https忽略证书直接请求
- httpclient https请求,自定义证书(微信商户示例)
- HTTP协议请求实现类CloseableHttpClient和HttpsURLConnection及HttpURLConnection
- WCF分布式安全开发实践(3):传输安全模式之自定义用户名密码身份验证:Transport_UserNamePassword_WSHttpBinding
- java发送http和https请求(忽略证书)
- android 网络协议等socket,http,HTTPS,get。post请求 等详解
- Https请求忽略证书验证最新实现
- HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Basic realm=xxxxx”
- jdk1.6 支持 tls1.2协议 并忽略身份验证
- CloseableHttpAsyncClient忽略https的证书验证
- HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Negotiate,NTLM”
- HTTP 请求未经客户端身份验证方案“Anonymous”授权。
- Java 通过HttpClient 带证书方式请求Https协议网站 (Post方式带xml文档,Get以及Delete方式)
- HTTP协议请求响应过程和HTTPS工作原理