在文档" http://doc.akka.io/docs/akka/2.4.11/scala/http/client-side/client-https-support.html#hostname-verification"它表示使用了outgoingConnectionTls,但该方法名称似乎已更改为outgoingConnectionHttps。
我有代码工作(将json响应作为字符串给出)使用可行的akka-http-core 1.0,但更新到最新版本(2.4.xx)似乎打破了它,即使它看起来像新的命名outgoingConnectionHttps就是所有改变的。现在我的结果就是" List()"当我尝试解组响应实体时。
任何人都可以帮忙吗?正在运行的代码如下所示
package com.packt.akka
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import akka.http.scaladsl.model.headers.BasicHttpCredentials
import akka.http.scaladsl.model.StatusCodes._
import akka.http.scaladsl.unmarshalling.Unmarshal
import akka.stream.ActorMaterializer
import akka.stream.scaladsl._
import com.typesafe.config.ConfigFactory
import scala.concurrent.Future
object JiraConnectionLevel extends App {
implicit val system = ActorSystem()
implicit val materializer = ActorMaterializer()
implicit val ec = system.dispatcher
val config = ConfigFactory.load()
val name = config.getString("auth.jira.user")
val password = config.getString("auth.jira.password")
val host = config.getString("services.jira.host")
val jiraUri = config.getString("services.jira.uri")
val authorization = headers.Authorization(BasicHttpCredentials(name, password))
val connectionFlow: Flow[HttpRequest, HttpResponse, Future[Http.OutgoingConnection]]=
//This is where the method name changed it was Http().outgoingConnectionTls(host) which worked
Http().outgoingConnectionHttps(host)
val responseFuture =
Source.single(HttpRequest(headers = List(authorization),uri = jiraUri))
.via(connectionFlow)
.runWith(Sink.head)
responseFuture map { res =>
res.status match {
case OK =>
println(s"Response is:"+ Unmarshal(res.entity).to[String])
}
case _ =>
Unmarshal(res.entity).to[String].map { body =>
println(s"The response status is ${res.status} and response body is ${body}")
shutdown()
}
}
}
def shutdown() = {
Http().shutdownAllConnectionPools().onComplete{ _ =>
system.shutdown()
system.awaitTermination()
}
}
}