与代理服务器一起使用时,大型请求正文的 Netty 握手超时

N A*_*N A 5 java netty sendgrid asynchttpclient

我正在调用一个具有巨大正文(html)的电子邮件营销服务。主体大小 = 117184。

我正在使用 AsyncHttpClient,它使用 Netty 作为背景。

当我直接调用请求时,它是成功的,但当我尝试使用内部 https 代理服务器时,它会失败并出现以下异常。但是带有代理服务器的小型机构可以正常工作。以下是斯卡拉代码:

val client = asyncHttpClient(config().setProxyServer(proxyServer("XX-XYXY-100X.XXXX.local", 8080)))
val whenResponse = client.preparePost("https://api.sendgrid.com/v3/mail/send")
  .addHeader("Authorization", "Bearer XXXXXXXXX")
  .addHeader("Content-Type", "application/json")
  .setBody(randomBody)
  .execute
  .get(1000, TimeUnit.SECONDS)
Run Code Online (Sandbox Code Playgroud)

基本上 :

  • 主体很大,没有代理服务器:工作正常。
  • 小身材,带或不带代理服务器:工作正常。
  • 带有代理服务器的大型主体:不起作用。

对于使用代理服务器的大型请求,我看到以下异常。

Exception in thread "main" java.util.concurrent.ExecutionException: javax.net.ssl.SSLException: handshake timed out
    at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
    at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915)
    at org.asynchttpclient.netty.NettyResponseFuture.get(NettyResponseFuture.java:207)
    at send.RequestSender$.send1(RequestSender.scala:27)
    at send.RequestSender$.delayedEndpoint$send$RequestSender$1(RequestSender.scala:47)
    at send.RequestSender$delayedInit$body.apply(RequestSender.scala:14)
    at scala.Function0.apply$mcV$sp(Function0.scala:34)
    at scala.Function0.apply$mcV$sp$(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App.$anonfun$main$1$adapted(App.scala:76)
    at scala.collection.immutable.List.foreach(List.scala:389)
    at scala.App.main(App.scala:76)
    at scala.App.main$(App.scala:74)
    at send.RequestSender$.main(RequestSender.scala:14)
    at send.RequestSender.main(RequestSender.scala)
Caused by: javax.net.ssl.SSLException: handshake timed out
    at io.netty.handler.ssl.SslHandler.handshake(...)(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

N A*_*N A 2

我已报告此问题:https ://github.com/AsyncHttpClient/async-http-client/issues/1559

他们的开发人员很快就解决了这个问题。

此问题可以通过升级到 2.5.2 以上的版本来解决