如何解决有没有办法设置ssl握手超时时间
我正在使用SttpClient库发出请求。我的请求有时可能会花费很长时间,因此我将读取超时更改如下:
def get(url: String): Future[String] = {
val request = basicRequest.get(Uri(new URI(url)))
request.readTimeout(2.minutes).send()
...
}
但是我仍然遇到以下异常:
sttp.client.SttpClientException $ ConnectException:java.net.ConnectException:握手在10000毫秒后超时 在sttp.client.SttpClientException $ .defaultExceptionToSttpClientException(SttpClientException.scala:31)〜[core_2.12-2.2.4.jar:2.2.4] 在sttp.client.asynchttpclient.AsyncHttpClientBackend。$ anonfun $ adjustExceptions $ 1(AsyncHttpClientBackend.scala:343)〜[async-http-client-backend_2.12-2.2.4.jar:2.2.4] 在sttp.client.SttpClientException $$ anonfun $ adjustExceptions $ 1.applyOrElse(SttpClientException.scala:59)〜[core_2.12-2.2.4.jar:2.2.4] 在sttp.client.SttpClientException $$ anonfun $ adjustExceptions $ 1.applyOrElse(SttpClientException.scala:58)〜[core_2.12-2.2.4.jar:2.2.4] 在scala.concurrent.Future。$ anonfun $ recoverWith $ 1(Future.scala:417)〜[scala-library-2.12.12.jar:na] 在scala.concurrent.impl.Promise。$ anonfun $ transformWith $ 1(Promise.scala:41)〜[scala-library-2.12.12.jar:na] 在scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)〜[scala-library-2.12.12.jar:na] 在java.util.concurrent.ForkJoinTask $ RunnableExecuteAction.exec(ForkJoinTask.java:1402)〜[na:1.8.0_265] 在java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)〜[na:1.8.0_265] 在java.util.concurrent.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1056)〜[na:1.8.0_265] 在java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)〜[na:1.8.0_265] 在java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)〜[na:1.8.0_265] 由以下原因引起:java.net.ConnectException:握手在10000ms之后超时 在org.asynchttpclient.netty.channel.NettyConnectListener.onFailure(NettyConnectListener.java:179)〜[async-http-client-2.12.1.jar:na] 在org.asynchttpclient.netty.channel.NettyConnectListener $ 1.onFailure(NettyConnectListener.java:151)〜[async-http-client-2.12.1.jar:na] 在org.asynchttpclient.netty.SimpleFutureListener.operationComplete(SimpleFutureListener.java:26)〜[async-http-client-2.12.1.jar:na] 在io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:570)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:549)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:608)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:117)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.handler.ssl.SslHandler $ 5.run(SslHandler.java:2020)〜[netty-handler-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:170)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)〜[netty-transport-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.SingleThreadEventExecutor $ 4.run(SingleThreadEventExecutor.java:989)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.internal.ThreadExecutorMap $ 2.run(ThreadExecutorMap.java:74)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)〜[netty-common-4.1.48.Final.jar:4.1.48.Final] 在java.lang.Thread.run(Thread.java:748)〜[na:1.8.0_265] 造成原因:io.netty.handler.ssl.SslHandshakeTimeoutException:握手在10000毫秒后超时 在io.netty.handler.ssl.SslHandler $ 5.run(SslHandler.java:2017)〜[netty-handler-4.1.48.Final.jar:4.1.48.Final] ...省略了9个常见框架
我可以看到SslHandler有一个 setHandshakeTimeout 方法,可以在其中更改此值,但是有什么方法可以通过SttpClient库访问它?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。