1

Я хочу сделать что-то, по-видимому, простое: вызов веб-службы и сохранение результата в базе данных.Webservice call in Play2 Scala

Я внутри кода Актер Акко и что я делаю это вызов метода объекта:

object Service { 
    def run { 
    val response = WS.url("http://api.server.com/rest/") 
    .withAuth("test", "test", com.ning.http.client.Realm.AuthScheme.BASIC) 
    .get.value.get.get.body 
    } 
} 

Как разобрать тело? Я попытался распечатать его на консоли, но я получил исключение NotSuchElement.

Любая идея, мысль? Как обрабатывать массивы, атрибуты, элементы XML?

Я в версии игры 2.1.0

ответ

4

вещи изменились немного, так как в предыдущей версии. Играть 2.1.0 зависит от scala.concurrent пакета вместо своих собственных классов:

  • Пьеса Promise теперь Scala Future
  • Пьеса Redeemable теперь Scala Promise

я не сделал есть время, чтобы проверить его, но из документации, которую я собрал, должно быть примерно так:

import play.api.libs.ws.WS 
import play.api.libs.concurrent.Execution.Implicits._ 
import scala.concurrent.Await 
import scala.concurrent.duration._ 
import scala.language.postfixOps 

object WebserviceCallParseXML { 

    val responseFuture = WS.url("http://api.server.com/rest/") 
    .withAuth("test", "test", com.ning.http.client.Realm.AuthScheme.BASIC) 
    .get() 

    val resultFuture = responseFuture map { response => 
    response.status match { 
     case 200 => Some(response.xml) 
     case _ => None 
    } 
    } 

    val result = Await.result(resultFuture, 5 seconds) 

    println(if (result.isDefined) result.get else "No result found") 

} 

Документация о Future.value:

Если будущее не завершено, возвращаемое значение будет None. Если будущее будет завершено, значение будет Some (Success (t)), если оно содержит допустимый результат, или Some (Failure (error)), если оно содержит исключение.

+0

Он работает сладко, приятно попробовать без тестирования! Однако последняя часть вопроса отсутствует. Как преобразовать Some (response.xml) в класс Case, представляющий XML? –

+0

Это обычная обработка Scala xml. Возможно, эта статья может помочь вам начать: http://bcomposes.wordpress.com/2012/05/04/basic-xml-processing-with-scala/ – EECOLOR