私のコントローラーには、一連のSmsオブジェクトがあるとしましょう。これらのオブジェクトのそれぞれについて、Web サービスを呼び出したいと思います。その後、すべての呼び出しが成功すると、表示する SMS オブジェクトが返されます。
コントローラ:
def inviteBySms() = Action {
implicit request => {
val smsSet = getSet()
Async {
smsSet.map(sms => callSmsService(sms).map(response => {
response.status match {
case 200 => {
// somehow add the sms object to a success set
}
case _ => {
// ignore
}
}
}))
// Return Ok() with the success Set[SMS]
}
}
}
コントローラーのメソッド:
def postToService(sms: Sms) = {
val params = Map(Seq(current.configuration.getString("sms.service.user").getOrElse("")),
"pass" -> Seq(current.configuration.getString("sms.service.password").getOrElse("")),
"mobilephone" -> Seq(sms.number))
)
val futureResponse = WS.url(Play.current.configuration
.getString("sms.service.url").getOrElse(""))
.withHeaders("Content-Type" -> "application/x-www-form-urlencoded; charset=utf-8")
.post(params)
}