Play Framework 2.0 (Scala を使用) を使用して Twitter API に POST リクエストを送信するにはどうすればよいですか? 私が呼ぼうとしている API は、GET と POST の両方で機能します。このコードで GET を使用して正常に呼び出すことができました。
val followersURL = "http://api.twitter.com/1/users/lookup.json?user_id=" + listOfFollowers.mkString(",")
WS.url(followersURL)
.sign(OAuthCalculator(Twitter.KEY, tokens))
.get()
.map{ response =>
val screenName: Seq[String] = response.json match {
case res: JsArray => res.value.map{ value => (value \ "name").toString }
case _ => Seq("")
}
}
次に、次のように POST を使用して API を呼び出そうとしました。
WS.url("http://api.twitter.com/1/users/lookup.json")
.sign(OAuthCalculator(Twitter.KEY, tokens))
.post(Map("user_id"->listOfFollowers))
.map { response =>
val screenName: Seq[String] = response.json match {
case res: JsArray => res.value.map{ value => (value \ "name").toString }
case _ => Seq("")
}
}
うまくいかず、次の例外が発生します。
[error] play - Waiting for a promise, but got an error: null
java.lang.NullPointerException: null
at java.io.Reader.<init>(Unknown Source) ~[na:1.7.0_01]
at java.io.InputStreamReader.<init>(Unknown Source) ~[na:1.7.0_01]
at oauth.signpost.OAuth.decodeForm(OAuth.java:157) ~[signpost-core.jar:na]
at oauth.signpost.AbstractOAuthConsumer.collectBodyParameters(AbstractOAuthConsumer.java:236) ~[signpost-core.jar:na]
at oauth.signpost.AbstractOAuthConsumer.sign(AbstractOAuthConsumer.java:96) ~[signpost-core.jar:na]
at play.api.libs.oauth.OAuthCalculator.sign(OAuth.scala:106) ~[play_2.9.1.jar:2.0.1]
OAuthCalculator で例外が発生すると書かれているので、.sign
呼び出しをコメントアウトしてみましたが、例外はスローされませんでしたが、当然、正しい結果は得られませんでした。
私は何か間違ったことをしていますか?私は何を間違っていますか、なぜですか? どうすれば問題を解決できますか?
前にありがとう。