2016-06-15 12 views
1

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を使って再生できます。

+0

エンティティデータには 'y.entity.data'を使ってアクセスすることができ、' ByteString'を返します。あなたのケースでは 'ByteString'で' utf8String'を呼び出すだけで、解析できるjson文字列を得るだけで十分です。 – thwiegan

+1

'getContentType()'ゲッターは、Javaとの互換性のためだけに存在します。 Scalaでは 'contentType'を使うべきです – WelcomeTo

答えて

関連する問題