Akkahttp,GET http().singleRequest正在意外地抛出服务器关闭的连接



Akka http版本-10.0.14

Akka版本-2.4.20

使用akkahttp作为客户端发送GET请求并接收响应正文时出现以下错误

线程"main"akka.http.impl.engine.client.OutgoingConnectionBlueprint$UnexpectedConnectionClosureException异常:http服务器在为1个未完成的请求提供响应之前意外关闭了连接

观察:

  1. 相同的GET调用通过curl命令工作

  2. GET调用使用相同的客户端代码,'https://api.xforce.ibmcloud.com/hub/invalidcall'

代码-

import akka.actor._
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import akka.http.scaladsl.unmarshalling.Unmarshal
import akka.stream.ActorMaterializer
import akka.util.Timeout
import scala.concurrent.{Await, Future}
import scala.concurrent.duration._
object Client {
implicit val timeout: Timeout = Timeout(10.seconds)
def main(args: Array[String]): Unit = {
implicit val system = ActorSystem()
implicit val materializer = ActorMaterializer()
implicit val executionContext = system.dispatcher
val responseFuture: Future[HttpResponse] =
Http().singleRequest(
HttpRequest(
uri = "http://localhost:9090/xstreams/v1/offset/getOffset?appId=local-1543580292487&sourceName=mysql",
//uri="https://api.xforce.ibmcloud.com/hub/invalidcall",
method = HttpMethods.GET
)
)
val entity = Await.result(responseFuture, timeout.duration).entity
val responseStringF = Unmarshal(entity).to[String]
val responseString = Await.result(responseStringF, timeout.duration)
println("nResult = " + responseString)
system.terminate()
}
}

解决了问题,当我使用0.0.0.0或实际IP地址作为主机地址时,get调用按预期工作!不知道"localhost"出了什么问题!

最新更新