Tag: apache httpcomponents

使用CloseableHttpClient的不受支持的记录版本SSLv2Hello

我正在尝试进行https调用并收到以下错误:不支持的记录版本SSLv2Hello 任何人都可以说明我做错了什么? 谢谢你的帮助。 这是StackTrace: debug:不支持的记录版本SSLv2Hello javax.net.ssl.SSLException:Sun.security上sun.security.ssl.InputRecord.read(未知来源)sun.security.ssl.InputRecord.readV3Record(未知来源)的不受支持的记录版本SSLv2Hello .sl.SSLSocketImpl.readRecord(未知来源)at sun.security.ssl.SSLSocketImpl.performInitialHandshake(未知来源)sun.security.ssl.SSLSocketImpl.startHandshake(未知来源)at sun.security.ssl.SSLSocketImpl.startHandshake(未知来自org.apache.http的org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:275)org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:254)位于org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318)的.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:123)org.apache.http.impl.execchain.MainClientExec.establishRoute (MainCl ientExec.java:363)org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)at org位于org.apache.http.impl.client的org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)上的.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86) .internalHttpClient.doExecute(InternalHttpClient.java:184)atg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)at httpcomponents.httpsTest.main(httpsTest.java:135) 这是工作示例: import com.sun.net.ssl.internal.ssl.Provider; import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.Security; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLException; import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSocket; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; […]

PoolingHttpClientConnectionManager:如何做Https请求?

我目前正在尝试使用CloseableHttpClient同时执行多个HttpGet请求。 我搜索了如何做到这一点,答案是使用PoolingHttpClientConnectionManager 。 此时我得到了这个: PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager(); CloseableHttpClient httpClient = HttpClients.custom() .setConnectionManager(cManager) .build(); 然后我尝试了http://www.google.com的HttpGet请求,一切正常。 然后我通过cmd创建了一个信任库并导入了目标网站的证书,用我的信任库设置了SSLConnectionSocketFactory并设置了httpClient的SSLSocketFactory : KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); FileInputStream inputStream = new FileInputStream(new File(“myTrustStore.truststore”)); trustStore.load(inputStream, “nopassword”.toCharArray()); inputStream.close(); SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(trustStore).build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager(); CloseableHttpClient httpClient = HttpClients.custom() .setSSLSocketFactory(sslsf) .setConnectionManager(cManager) .build(); 如果我尝试执行Https HttpGet那么我会得到一个PKIX […]

连接和连接请求超时

我正在使用Http Apache Components来执行http交互。 我需要调整我的http客户端。 为此,我有两个参数:连接超时和连接请求超时。 在图书馆文档和源代码中(没有找到评论)我没有找到这个术语的定义。 我需要知道他们究竟是什么意思。 可能是他们在HTTP协议文档中定义但我找不到它。 所以,我的问题是这两个术语的意思是什么以及它们如何相互区别。

使用Apache HttpComponents Client签署AWS HTTP请求

我正在尝试向受IAM访问策略保护的AWS Elasticsearch域发出HTTP请求。 我需要签署这些请求,以便AWS授权这些请求。 我正在使用Jest ,后者又使用Apache HttpComponents Client 。 这似乎是一个常见的用例,我想知道是否有某种类型的库,我可以在Apache HttpComponents客户端上使用它来签署所有请求。