从Scala中的Akka ResponseEntity获取内容

从Scala中的Akka ResponseEntity获取内容,scala,akka,httpentity,Scala,Akka,Httpentity,我对返回json的rest服务执行GET HTTP调用。我想将json解析为scala对象,但在这里我被卡住了。我正在使用Akka api,无法从Akka的响应中检索内容 这是我的sbt文件: name := "ScalaHttp" version := "1.0" scalaVersion := "2.11.8" libraryDependencies ++={ val akkaV = "2.4.5" Seq( "com.typesafe.akka" %%

我对返回json的rest服务执行GET HTTP调用。我想将json解析为scala对象,但在这里我被卡住了。我正在使用Akka api,无法从Akka的响应中检索内容

这是我的sbt文件:

name := "ScalaHttp"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies ++={
  val akkaV = "2.4.5"
  Seq(
    "com.typesafe.akka"         %%  "akka-http-core"    % akkaV,
    "com.typesafe.play"         %%  "play-json"         % "2.4.0-M3"
  )
}
这是应用程序

import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.HttpRequest
import akka.stream.ActorMaterializer

import scala.concurrent.ExecutionContext.Implicits.global


object Sender {
  def main(args: Array[String]): Unit = {

    implicit val system = ActorSystem()
    implicit val materializer = ActorMaterializer()

    Http().singleRequest(HttpRequest(uri = "http://declinators.com/declinator?noun=komunikacja")) foreach {
      y => println(y.entity)
        println(y.entity.getContentType())
        println(y.entity.contentType)
    }
  }
}
这张照片是:

HttpEntity.Strict(application/json,{"nominative":"komunikacja","genitive":"komunikacji","dative":"komunikacji","accusative":"komunikację","instrumental":"komunikacją","locative":"komunikacji","vocative":"komunikacjo"})
application/json
application/json
问题来了:
1.为什么ResponseEntity提供getContentType()和contentType()?他们返回同样的东西。
2.获取contentyType很容易,有两种方法,但是如何获取内容本身,这样我就可以使用json播放(即使用play解析内容)

您可以将entity.data.toString用于二进制内容类型,或以下代码段

data.decodeString(nb.charset.value)
请遵循此处的HttpEntity.Strict.toString实现了解详细信息:


您可以将entity.data.toString用于二进制内容类型,或者使用以下代码段

data.decodeString(nb.charset.value)
请遵循此处的HttpEntity.Strict.toString实现了解详细信息:


您可以使用
y.entity.data
访问实体数据,它通过testring返回一个
。在您的情况下,只需在
ByTestString
上调用
utf8String
就足够了,以获取可以解析的json字符串。
getContentType()
getter的存在只是为了与Java兼容。在Scala中,您应该使用
contentType
您可以使用
y.entity.data
访问实体数据,它通过testring
返回一个
。在您的情况下,只需在
ByTestString
上调用
utf8String
就足够了,以获取可以解析的json字符串。
getContentType()
getter的存在只是为了与Java兼容。在Scala中,您应该使用
contentType