Documentation

You are viewing the documentation for the 2.0.x release series. The latest stable release series is 2.4.x.

§Play WS API

ときどき、Play アプリケーションから他の HTTP サービスを呼び出したくなることがあります。Play は非同期の HTTP 呼び出しを実現する play.api.libs.ws.WS というライブラリでこれをサポートしています。

play.api.libs.ws.WS による全ての HTTP 通信は、Play の非同期処理のメカニズムで処理される Promise[play.api.libs.ws.Response] を返します。

§HTTP 通信の開始

HTTP リクエストを送信するためには、まず WS.url() を使って URL を指定します。その結果、例えばヘッダをセットする、といったような 各種 HTTP オプションを指定するためのビルダが返ってきます。最後に利用したい HTTP メソッドに対応するメソッドを呼び出します。例えば:

val homePage: Promise[ws.Response] = WS.url("http://mysite.com").get()

または、以下のように記述します。

val result: Promise[ws.Response] = {
  WS.url("http://localhost:9001/post").post("content")
}

§HTTP レスポンスの取得

HTTP 呼び出しは非同期で行われ、実際のコンテンツを取得するためには Promise[ws.Response] を操作する必要があります。また、複数の Promise を合成して、最終的に Play サーバが直接的に処理できるように Promise[Result] を返す、という方法も使えます。

def feedTitle(feedUrl: String) = Action {
  Async {
    WS.url(feedUrl).get().map { response =>
      Ok("Feed title: " + (response.json \ "title").as[String])
    }
  }  
}

§URL フォームエンコードされたデータの送信

URL フォームエンコードされたデータを送信するためには、Map[String, Seq[String]] を post() に渡す必要があります。

WS.url(url).post(Map("key" -> Seq("value")))

次ページ: Play の OpenID サポート


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。