Ich mache einen GET HTTP Anruf zu einem Restdienst, der einen json zurückbringt. Ich möchte den JSON zu einem Scala-Objekt analysieren, aber hier blieb ich stecken. Ich bin mit dem Akka api und ich kann nicht den Inhalt aus dem Akka des ResponseEntityErhalte Inhalt von Akka ResponseEntity in Scala
Hier abzurufen verwalten ist meine sbt Datei:
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"
)
}
Und hier ist die App
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)
}
}
}
Diese Drucke:
HttpEntity.Strict(application/json,{"nominative":"komunikacja","genitive":"komunikacji","dative":"komunikacji","accusative":"komunikację","instrumental":"komunikacją","locative":"komunikacji","vocative":"komunikacjo"})
application/json
application/json
Hier kommen die Fragen:
1. Warum ResponseEntity liefert getContentType() und contentType()? Sie geben dasselbe zurück. 2. Den contentyType zu erhalten ist einfach, du hast zwei Möglichkeiten dafür, aber wie kann ich den Inhalt selbst bekommen, damit ich mit dem json spielen (d. H. Mit play spielen) kann!
Sie können auf die Entitätsdaten mit 'y.entity.data' zugreifen, was einen' ByteString' zurückgibt. In Ihrem Fall sollte es ausreichen, einfach 'utf8String' auf dem 'ByteString' zu setzen, um eine JSON-Zeichenfolge zu erhalten, die Sie analysieren können. – thwiegan
Der 'getContentType()' Getter existiert nur für Java-Kompatibilität. In Scala sollten Sie 'contentType' verwenden – WelcomeTo