【发布时间】:2021-11-26 16:25:05
【问题描述】:
我正在尝试使用 Java 11 中的 HttpClient 从 Java API 调用 Scala 服务。
在 Java API 上,代码如下所示:
var client = HttpClient.newHttpClient();
var packagesCountUrl = getPackagesCountUrl();
var sessionUserToken = sessionUserHelper.getSessionUserToken();
var request = HttpRequest.newBuilder(URI.create(packagesCountUrl))
.GET()
.header(HttpHeaders.AUTHORIZATION, sessionUserToken)
.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
.timeout(Duration.of(10, SECONDS))
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
在 Java API 上,我收到带有 503 状态代码的响应,并且在 Scala API 的日志中有以下内容:
ERROR] [10/05/2021 18:59:29.711] [abc-api-actorSystem-akka.actor.default-dispatcher-11] [akka://abc-api-actorSystem/system/StreamSupervisor-0/flow-24966-1-mapAsyncUnordered] Error in stage [ExposeAttributes(akka.http.impl.engine.http2.Http2Blueprint$$$Lambda$889/2094115865@e6b910)]: requirement failed: Requests with method 'CONNECT' must have an empty entity
java.lang.IllegalArgumentException: requirement failed: Requests with method 'CONNECT' must have an empty entity
at scala.Predef$.require(Predef.scala:277)
at akka.http.scaladsl.model.HttpRequest.<init>(HttpMessage.scala:276)
at akka.http.scaladsl.model.HttpRequest$.apply(HttpMessage.scala:442)
at akka.http.impl.engine.http2.RequestParsing$.rec$1(RequestParsing.scala:84)
at akka.http.impl.engine.http2.RequestParsing$.$anonfun$parseRequest$3(RequestParsing.scala:140)
at akka.http.impl.util.ExposeAttributes$$anon$14.onPush(StreamUtils.scala:354)
at akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:523)
at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:409)
at akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:606)
at akka.stream.impl.fusing.ActorGraphInterpreter$SimpleBoundaryEvent.execute(ActorGraphInterpreter.scala:47)
at akka.stream.impl.fusing.ActorGraphInterpreter$SimpleBoundaryEvent.execute$(ActorGraphInterpreter.scala:43)
at akka.stream.impl.fusing.ActorGraphInterpreter$BatchingActorInputBoundary$OnNext.execute(ActorGraphInterpreter.scala:85)
at akka.stream.impl.fusing.GraphInterpreterShell.processEvent(ActorGraphInterpreter.scala:581)
at akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:749)
at akka.stream.impl.fusing.ActorGraphInterpreter$$anonfun$receive$1.applyOrElse(ActorGraphInterpreter.scala:764)
at akka.actor.Actor.aroundReceive(Actor.scala:539)
at akka.actor.Actor.aroundReceive$(Actor.scala:537)
at akka.stream.impl.fusing.ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:671)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:612)
at akka.actor.ActorCell.invoke(ActorCell.scala:581)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268)
at akka.dispatch.Mailbox.run(Mailbox.scala:229)
at akka.dispatch.Mailbox.exec(Mailbox.scala:241)
at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
【问题讨论】:
标签: scala akka httpclient http2 http-1.1