jsonを返すレストサービスにGET HTTPコールを行います。私はjsonをscalaオブジェクトに構文解析したいと思いますが、ここで私は固まってしまいました。ScalaのAkka ResponseEntityからコンテンツを取得
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"
)
}
そして、ここでは、アプリが
です:私は、アッカのAPIを使用していますが、私はここでアッカの ResponseEntityからをコンテンツを取得するために管理することはできませんすることは、私のSBTファイルです
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
ここで質問が来る:
なぜResponseEntityはgetContentType()とcontentType()を提供するのですか?彼らは同じことを返します。 2. contentyTypeを取得するのは簡単ですが、2つの方法がありますが、どのようにしてコンテンツ自体を取得できますか?jsonを使って再生できます。
エンティティデータには 'y.entity.data'を使ってアクセスすることができ、' ByteString'を返します。あなたのケースでは 'ByteString'で' utf8String'を呼び出すだけで、解析できるjson文字列を得るだけで十分です。 – thwiegan
'getContentType()'ゲッターは、Javaとの互換性のためだけに存在します。 Scalaでは 'contentType'を使うべきです – WelcomeTo