Scala Playframework WS-API响应处理

Scala Playframework WS-API响应处理,scala,playframework-2.1,Scala,Playframework 2.1,我使用PlayFramework中的PlayWSAPI与外部API通信。 我需要处理接收到的数据,但不知道如何处理。我得到一个响应,我想把它传递给其他函数,比如JSON对象。我怎样才能做到这一点? 我使用的代码可以在下面看到。 谢谢 def getTasks=Action{ 异步的{ val promise=WS.url(getAppProperty(“helpdesk.host”))。带标题( “接受”->“应用程序/json”, “授权”->“基本bi5sdWJ5YW5vdjoyMDEzMD

我使用PlayFramework中的PlayWSAPI与外部API通信。 我需要处理接收到的数据,但不知道如何处理。我得到一个响应,我想把它传递给其他函数,比如JSON对象。我怎样才能做到这一点? 我使用的代码可以在下面看到。 谢谢

def getTasks=Action{
异步的{
val promise=WS.url(getAppProperty(“helpdesk.host”))。带标题(
“接受”->“应用程序/json”,
“授权”->“基本bi5sdWJ5YW5vdjoyMDEzMDcwNDE0NDc=”).get()
为了{
回答我看了一下,你可以试试:

Async {
    WS.url(getAppProperty("helpdesk.host")).withHeaders(
        "Accept" -> "application/json",
        "Authorization" -> "Basic bi5sdWJ5YW5vdjoyMDEzMDcwNDE0NDc=" ).get().map{
        response => Ok(response.json \\ "Tasks")
    }      
}
我得到一个响应,我想把它传递给其他函数,比如JSON对象

我不确定我是否理解您的问题,但我猜您希望在返回到客户端之前转换从WS-call接收的json,并且此转换可能需要几行代码。如果这是正确的,那么您只需要在yield语句周围添加花括号,以便对响应做更多的工作:

def getTasks = Action {
  Async {
    val promise = WS.url(getAppProperty("helpdesk.host")).withHeaders(
      "Accept" -> "application/json",
      "Authorization" -> "Basic bi5sdWJ5YW5vdjoyMDEzMDcwNDE0NDc=" ).get()
    for {
      response <- promise
    } yield {
      // here you can have as many lines of code as you want,
      // only the result of the last line is yielded
      val transformed = someTransformation(response.json)
      Ok(transformed)
    }  
  }
}
def getTasks=Action{
异步的{
val promise=WS.url(getAppProperty(“helpdesk.host”))。带标题(
“接受”->“应用程序/json”,
“授权”->“基本bi5sdWJ5YW5vdjoyMDEzMDcwNDE0NDc=”).get()
为了{

响应我尝试过这样的代码,但发现了新问题。[code]
val-map=scala.collection.mutable.map[String,String]()WS.url(getAppProperty(“helpdesk.host”).withHeaders(“Accept”->“application/json”,“Authorization”->Basic bi5sdWJ5YW5vdjoyMDEzMDcwNDE0NDc=“).get().map(){response=>val obj=(response.json\\\“Tasks”).toString map.put(“object”,obj)println(“map:+obj”)}Ok(“object:+map.getOrElse(“object”,0))
[/code]返回的映射为空,但在响应处理映射的括号中包含值
def getTasks = Action {
  Async {
    val promise = WS.url(getAppProperty("helpdesk.host")).withHeaders(
      "Accept" -> "application/json",
      "Authorization" -> "Basic bi5sdWJ5YW5vdjoyMDEzMDcwNDE0NDc=" ).get()
    for {
      response <- promise
    } yield {
      // here you can have as many lines of code as you want,
      // only the result of the last line is yielded
      val transformed = someTransformation(response.json)
      Ok(transformed)
    }  
  }
}