2012-03-17 34 views
5

Oyun çerçevesinden bir web servisini aramaya çalışıyorum ve yanlış yaptığımı düşünüyorum.playframework 2.0'dan bir web servisine bir GET isteği yapma

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 

Bunu aradığınızda, vücut "useraccount yok" oluşur: Aşağıdaki ne ben Play Framework gelen çalışıyorum dan http://www.myweather2.com/developer/forecast.ashx?uac=eDKGlpcBQN&query=52.6%2C-4.4&output=xml

bir pasajı bir örnek aramanız var. Bu URL'yi bir tarayıcıya koyduğumda, aradığım yanıtı alırım. Burada neyi yanlış yapıyorum?

+0

Evet, garip, 'curl' kullanırken bile çalışır. –

+0

Burada 'val' ne anlama geliyor, bu bir oyun sınıfı mı? – area5one

cevap

9

sonra \n veya \r ekleme olmamasına dikkat edin. İthalatı import play.api.libs.ws.WS'a sabitlediğimde işe yaradı. Ben hala yanlış ithalat

+0

Doğru ithalat hangisiydi? Ben import play.libs._' kullanılır. –

+0

Düzenlenmiş cevabı, bu – Martijn

+0

eklemek için aptalcaydı Oyun çerçeve belgelerine, diğer ithalat bahseder ve çalışmaz. Emin değilim neden. Neyse ki biri nedenini buldu. Bunu anlatan zor bir zaman geçirdim. –

2

"useraccount yok" hakkında bilmiyorum ama bu iş gibi görünüyor:

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 

Düzenleme: boşluk kaldırıldı.

Ayrıca yanlış ithalattan WS başlamıştı, emin editör Nedense ?

+0

'promise.value' benim için çalışmıyor. Play2.0'ın bu kısmı mı? Ayrıca, o alanın orada olması mı gerekiyor? Promise.value için – Martijn

+0

, bkz. [Here] (http://www.playframework.org/documentation/api/2.0/scala/index.html#play.api.libs.concurrent.Promise) – Jamil

+0

Teşekkürler – Martijn

2

ile yarı yolda çalıştı, biliyorum ki bu eski, ama aynı şeyi yapmaya çalışırken aynı sorunu çözmek için - sadece bu sorunu çözdüm.

GET değişkenleri WS.url ile geçmiş olması gerekir ("http: // ...") .setQueryParameter (anahtar, değer)

Örnek:

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

Can sıkıcı, ama nispeten basit düzeltin.

İlgili konular