2012-03-17 17 views
5

私はプレイフレームワークからWebサービスを呼び出そうとしています。私は間違っていると思います。playframework 2.0からWebサービスにGETリクエストを送信

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 

私はこれを呼び出すと、体が「UserAccountの存在しない」から構成されています。私は、次のようである私がplayframeworkからしようとしているからhttp://www.myweather2.com/developer/forecast.ashx?uac=eDKGlpcBQN&query=52.6%2C-4.4&output=xml

スニペットの例コールを持っています。私はちょうどブラウザにこのURLを入れて、私は私が探している応答を取得します。私はここで間違って何をしていますか?

+0

奇妙なことに、それは 'curl'を使用するときにも機能します。 –

+0

ここで「val」は何を意味しますか?それはプレークラスですか? – area5one

答えて

9

\nまたは\rを挿入されていない、私は間違ってインポートからWSを得ていたことを確認してください。私がimport play.api.libs.ws.WSに輸入を固定したとき、それは働いた。私はまだそれが間違ってインポートの途中で働いて驚いています

+0

正しいインポートはどちらですか?私は 'import play.libs._'を使用しました。 –

+0

編集された答え、それは愚かだったので追加しない – Martijn

+0

プレイフレームワークのドキュメントにはもう1つのインポートが記載されていますが、それは動作しません。理由は分かりません。ありがたいことに誰かがその理由を見つけました。これを考え出すのに苦労しました。 –

2

を知ってはいけない「​​UserAccountのは存在しません」が、これは動作するようです:

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 

は編集:スペースを削除しました。

はまた、あなたのエディタはいくつかの理由について?

+0

'promise.value'は私のために働いていません。それはplay2.0の一部ですか?また、そのスペースは後にあるはずですか? – Martijn

+0

for promise.value [こちら](http://www.playframework.org/documentation/api/2.0/scala/index.html#play.api.libs.concurrent.Promise) – Jamil

+0

ありがとう、私は持っているそれ – Martijn

2

私はこれは古いですが、私は同じことをしようとしている間、この問題を解決した - 同じ結果を得る。

GET変数はWS.urlに渡す必要があります( "のhttp:// ...").setQueryParameter(キー、値)

例:

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

迷惑が、比較的単純な修正する。

関連する問題