2012-03-17 5 views
5

Sto provando a chiamare un webservice dal framework di gioco, e penso che sto sbagliando. Ho una chiamata esempio per http://www.myweather2.com/developer/forecast.ashx?uac=eDKGlpcBQN&query=52.6%2C-4.4&output=xmlfare una richiesta GET ad un webservice dal playframework 2.0

Un frammento quello che sto cercando dal play framework è la seguente:

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 

Quando chiamo questo, il corpo è costituito da "AccountUtente non esiste". Quando metto questo URL in un browser, ottengo la risposta che sto cercando. Cosa sto facendo di sbagliato qui?

+0

Sì, strano, funziona anche quando si usa "arricciare". –

+0

cosa significa "val" qui, è una classe di gioco? – area5one

risposta

9

Per qualche motivo, mi è stato sempre WS dall'importazione sbagliata. Quando ho corretto le importazioni su import play.api.libs.ws.WS, ha funzionato. Sono comunque stupito che abbia funzionato a metà dell'importazione errata

+0

Quale importazione era quella giusta? Ho usato 'import play.libs._'. –

+0

Risposta modificata, è stato stupido non aggiungere – Martijn

+0

La documentazione della struttura di gioco menziona l'altra importazione e questo non funziona. Non so perché. Per fortuna qualcuno ha scoperto il motivo. È stato un momento difficile capire questo fuori. –

2

Non so su "AccountUtente non esiste", ma questo sembra funzionare:

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 

Edit: Rimosso lo spazio.

anche assicurarsi che il proprio editor non è l'inserimento di una o \n\r dopo ?

+0

'promise.value' non funziona per me. È quella parte di play2.0? Inoltre, lo spazio dovrebbe essere lì dopo il? – Martijn

+0

per promise.value, vedere [qui] (http://www.playframework.org/documentation/api/2.0/scala/index.html#play.api.libs.concurrent.Promise) – Jamil

+0

Grazie, ho it – Martijn

2

So che questo è vecchio, ma ho appena risolto questo problema mentre provavo a fare la stessa cosa - ottenendo gli stessi risultati.

variabili GET devono essere passati con WS.url ("http: // ...") .setQueryParameter (chiave, valore)

Esempio:

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() 

Fastidioso, ma relativamente semplice risolvere.