Thank you Oleg, it worked :). However now, once in a while I get this type of error: ```` Caused by: java.io.InterruptedIOException at org.apache.hc.client5.http.impl.async.AsyncConnectExec$2.cancelled(AsyncConnectExec.java:213) at org.apache.hc.client5.http.impl.async.InternalHttpAsyncExecRuntime$2.cancelled(InternalHttpAsyncExecRuntime.java:233) at org.apache.hc.core5.concurrent.BasicFuture.cancel(BasicFuture.java:154) at org.apache.hc.core5.concurrent.ComplexFuture.cancel(ComplexFuture.java:93) at org.apache.hc.core5.concurrent.BasicFuture.cancel(BasicFuture.java:161) at org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManager$2.cancelled(PoolingAsyncClientConnectionManager.java:395) at org.apache.hc.core5.concurrent.BasicFuture.cancel(BasicFuture.java:154) at org.apache.hc.core5.concurrent.ComplexFuture.cancel(ComplexFuture.java:93) at org.apache.hc.core5.concurrent.BasicFuture.cancel(BasicFuture.java:161) at org.apache.hc.client5.http.impl.nio.DefaultAsyncClientConnectionOperator$1.cancelled(DefaultAsyncClientConnectionOperator.java:111) at org.apache.hc.core5.concurrent.BasicFuture.cancel(BasicFuture.java:154) at org.apache.hc.core5.concurrent.ComplexFuture.cancel(ComplexFuture.java:93) at org.apache.hc.core5.concurrent.BasicFuture.cancel(BasicFuture.java:161) at org.apache.hc.client5.http.impl.nio.MultihomeIOSessionRequester$1$1.cancelled(MultihomeIOSessionRequester.java:147) at org.apache.hc.core5.concurrent.BasicFuture.cancel(BasicFuture.java:154) at org.apache.hc.core5.concurrent.BasicFuture.cancel(BasicFuture.java:161) at org.apache.hc.core5.reactor.IOSessionRequest.cancel(IOSessionRequest.java:83) at org.apache.hc.core5.reactor.SingleCoreIOReactor.closePendingConnectionRequests(SingleCoreIOReactor.java:366) at org.apache.hc.core5.reactor.SingleCoreIOReactor.doTerminate(SingleCoreIOReactor.java:101) at org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor.execute(AbstractSingleCoreIOReactor.java:89) at org.apache.hc.core5.reactor.IOReactorWorker.run(IOReactorWorker.java:44) ```` Not always - most of the times it works fine, it is just sometimes.
На пн, 22.07.2019 г. в 12:43 ч. Oleg Kalnichevski <ol...@apache.org> написа: > On Mon, 2019-07-22 at 12:29 +0300, Petar Tahchiev wrote: > > Hello, > > I have a Tomcat server running on port 8112 via HTTPS. The Tomcat has > > http2 > > enabled and is running with OpenJDK11. > > Now when I try to connect with HTTPClient 5.0-beta5 I get this > > exception: > > =================== > > 2019-07-22 12:22:57,699 [https-jsse-nio-8443-exec-2] INFO : > > Recoverable I/O > > exception (org.apache.hc.core5.http.NoHttpResponseException) caught > > when > > processing request to {s}->https://localhost:8112 > > 2019-07-22 12:22:57,709 [https-jsse-nio-8443-exec-2] INFO : > > Recoverable I/O > > exception (org.apache.hc.core5.http.NoHttpResponseException) caught > > when > > processing request to {s}->https://localhost:8112 > > 2019-07-22 12:22:57,719 [https-jsse-nio-8443-exec-2] INFO : > > Recoverable I/O > > exception (org.apache.hc.core5.http.NoHttpResponseException) caught > > when > > processing request to {s}->https://localhost:8112 > > 2019-07-22 12:22:57,732 [https-jsse-nio-8443-exec-2] ERROR: > > localhost:8112 > > failed to respond > > org.apache.hc.core5.http.NoHttpResponseException: localhost:8112 > > failed to > > respond > > at > > org.apache.hc.core5.http.impl.io.DefaultHttpResponseParser.createConn > > ectionClosedException(DefaultHttpResponseParser.java:87) > > at > > org.apache.hc.core5.http.impl.io.AbstractMessageParser.parse(Abstract > > MessageParser.java:243) > > at > > org.apache.hc.core5.http.impl.io.AbstractMessageParser.parse(Abstract > > MessageParser.java:53) > > at > > org.apache.hc.core5.http.impl.io.DefaultBHttpClientConnection.receive > > ResponseHeader(DefaultBHttpClientConnection.java:187) > > at > > org.apache.hc.core5.http.impl.io.HttpRequestExecutor.execute(HttpRequ > > estExecutor.java:181) > > at > > org.apache.hc.core5.http.impl.io.HttpRequestExecutor.execute(HttpRequ > > estExecutor.java:224) > > at > > org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager > > $InternalConnectionEndpoint.execute(PoolingHttpClientConnectionManage > > r.java:596) > > at > > org.apache.hc.client5.http.impl.classic.InternalExecRuntime.execute(I > > nternalExecRuntime.java:220) > > at > > org.apache.hc.client5.http.impl.classic.MainClientExec.execute(MainCl > > ientExec.java:107) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(Exec > > ChainElement.java:51) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(Ex > > ecChainElement.java:57) > > at > > org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectEx > > ec.java:181) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(Exec > > ChainElement.java:51) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(Ex > > ecChainElement.java:57) > > at > > org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(Protocol > > Exec.java:165) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(Exec > > ChainElement.java:51) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(Ex > > ecChainElement.java:57) > > at > > org.apache.hc.client5.http.impl.classic.RetryExec.execute(RetryExec.j > > ava:88) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(Exec > > ChainElement.java:51) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(Ex > > ecChainElement.java:57) > > at > > org.apache.hc.client5.http.impl.classic.RedirectExec.execute(Redirect > > Exec.java:116) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(Exec > > ChainElement.java:51) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(Ex > > ecChainElement.java:57) > > at > > org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execut > > e(ContentCompressionExec.java:125) > > at > > org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(Exec > > ChainElement.java:51) > > at > > org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute( > > InternalHttpClient.java:175) > > at > > org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(C > > loseableHttpClient.java:77) > > at > > com.nemesis.console.backend.storefront.DefaultRestAuthenticationProvi > > der.authenticate(DefaultRestAuthenticationProvider.java:116) > > =================== > > > > - If I change the URL from > > https://localhost:8112/storefront/rest/auth to > > https://some-website-with-valid-certificate.com/ it all works fine. > > - If I change the Tomcat server to work with HTTP1.1 it all works > > fine. > > Here is my code: > > =================== > > > > try { > > // Trust standard CA and those trusted by our custom strategy > > final SSLContext sslcontext = > > SSLContexts.custom().loadTrustMaterial(new TrustStrategy() { > > > > @Override > > public boolean isTrusted(final X509Certificate[] chain, final > > String authType) throws CertificateException { > > return true; > > } > > > > }).build(); > > > > int timeout = 5; > > > > RequestConfig config = > > RequestConfig.custom().setResponseTimeout(timeout, > > TimeUnit.SECONDS).setConnectTimeout(timeout, > > TimeUnit.SECONDS).build(); > > > > // Allow TLSv1.2 protocol only > > final SSLConnectionSocketFactory sslSocketFactory = > > SSLConnectionSocketFactoryBuilder.create().setSslContext(sslcontext). > > setTlsVersions(TLS.V_1_2) > > > > > > .setHostnameVerifier(NoopHostnameVerifier.INSTANCE).build(); > > > > Registry<ConnectionSocketFactory> registry = > > RegistryBuilder.<ConnectionSocketFactory>create().register("https", > > sslSocketFactory).build(); > > > > HttpClientConnectionManager ccm = new > > PoolingHttpClientConnectionManager(registry); > > > > try (CloseableHttpClient httpclient = > > HttpClients.custom().setRetryHandler(new > > DefaultHttpRequestRetryHandler(3)).setDefaultRequestConfig(config) > > > > .setConnectionManager(ccm).build()) { > > > > HttpGet httpGet = new HttpGet(restBaseUrl + "auth"); > > > > LOG.debug("Calling: " + restBaseUrl + "auth"); > > > > httpGet.setHeader("test", username); > > httpGet.setHeader("more-test", password); > > > > final HttpClientContext clientContext = > > HttpClientContext.create(); > > > > try (final CloseableHttpResponse response2 = > > httpclient.execute(httpGet, clientContext)) { > > HttpEntity entity2 = response2.getEntity(); > > final String response = EntityUtils.toString(entity2, > > Charset.defaultCharset()); > > LOG.info(response); > > } > > } > > } catch (NoSuchAlgorithmException | KeyManagementException | > > ParseException | KeyStoreException | IOException e) { > > LOG.error(e.getMessage(), e); > > } > > > > ======================= > > > > Any clues will be appreciated. > > Hi Petar > > Classic HttpClient 5.0 support HTTP/1.1 version only. You need to > migrate to HttpAsyncClient 5.0 to be able to use HTTP/2. > > For migration instructions you can refer to this migration guide > > https://ok2c.github.io/httpclient-migration-guide/ > > Oleg > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org > For additional commands, e-mail: httpclient-users-h...@hc.apache.org > > -- Regards, Petar! Karlovo, Bulgaria. --- Public PGP Key at: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x19658550C3110611 Key Fingerprint: A369 A7EE 61BC 93A3 CDFF 55A5 1965 8550 C311 0611