2012-03-17 620 views
5

Estoy intentando llamar a un servicio web desde el marco de juego, y creo que lo estoy haciendo mal. Tengo una llamada de ejemplo para http://www.myweather2.com/developer/forecast.ashx?uac=eDKGlpcBQN&query=52.6%2C-4.4&output=xmlhaciendo una petición GET a un servicio web desde el playframework 2.0

un fragmento de lo que estoy tratando de la playframework es la siguiente:

val response = WS.url("http://www.myweather2.com/developer/forecast.ashx?uac=eDKGlpcBQN&query=52.6%2C-4.4&output=xml").get.get() 
val body = response.getBody 

Cuando llamo a esto, el cuerpo se compone de "UserAccount no existe". Cuando acabo de poner esta url en un navegador, obtengo la respuesta que estoy buscando. ¿Qué estoy haciendo mal aquí?

+0

Sí extraño, incluso funciona cuando se usa 'curl'. –

+0

¿Qué significa el "val" aquí, es una clase de juego? – area5one

Respuesta

9

Por alguna razón, me estaba WS de la importación equivocado. Cuando arreglé las importaciones a import play.api.libs.ws.WS, funcionó. Todavía estoy sorprendido que funcionó hasta la mitad con la importación incorrecta

+0

¿Qué importación era la correcta? Usé 'import play.libs._'. –

+0

Respuesta editada, fue estúpido no agregar – Martijn

+0

La documentación de play framework menciona la otra importación y eso no funciona. No estoy seguro por qué. Afortunadamente, alguien descubrió el motivo. Tuvimos un tiempo difícil descifrar esto. –

2

no sabe acerca de "no existe UserAccount", pero esto parece funcionar:

val promise = WS.url("http://www.myweather2.com/developer/forecast.ashx?uac=eDKGlpcBQN&query=52.6%2C-4.4&output=xml").get() 
    val body = promise.value.get.body 

Editar: Se ha eliminado el espacio.

También asegúrese de que su editor no es la inserción de un \n o \r después ?

+0

'promise.value' no funciona para mí. ¿Es eso parte de play2.0? Además, ¿se supone que ese espacio estará allí después del? – Martijn

+0

para promise.value, ver [aquí] (http://www.playframework.org/documentation/api/2.0/scala/index.html#play.api.libs.concurrent.Promise) – Jamil

+0

Gracias, tengo es – Martijn

2

Sé que esto es viejo, pero me acabo de resolver este problema al intentar hacer la misma cosa - conseguir los mismos resultados.

las variables GET deben pasar con WS.url ("http: // ...") .setQueryParameter (clave, valor)

Ejemplo:

val promise = WS.url("http://www.myweather2.com/developer/forecast.ashx").setQueryParameter("uac", "eDKGlpcBQN").setQueryParameter("query", "52.6%2C-4.4").setQueryParameter("output", "xml").get() 

molesto, pero una relativamente simple fijar.

Cuestiones relacionadas