0
私はFORMDATAにURLパラメータを付加し、特殊なキーと値のペアを持つsyncronous HTTPポストを作るために、アクションから次のヘルパー関数を呼び出しています
のために与えられたFORMDATAへの追加しますは、httpポスト
def act = Action { request =>
request.body.asFormUrlEncoded match {
case Some(formdata) =>
synchronousPost(url, formdata + ("handshake" -> List("ok"))) match {
実際にはいくつかの古い要旨をコピー&ペーストであり、私はそれはきれいな方法で書き換えることができ、かなり確信している:それは、このように呼ばれています。
val params = ...
はどのようにしてよりクリーンな方法で書き直すことができますか?それは低レベルのようです。
元のフォームデータはrequest.body.asFormUrlEncoded
から来て、私はフォームデータマップにハンドシェイクパラメータを追加して元の要求を送信者に送り返し、ハンドシェイクを行います。それはだときAwait
を使用する
val future: Future[WSResponse] = ws.url(url)
.withHttpHeaders(("Content-Type", "application/x-www-form-urlencoded"))
.post(formdata)
ところで、それは考えられています悪いフォーム:formdata
以来
ことができますだけでなく 'ポスト(FORMDATA)'直接文字列に変換せず? Map [String、Seq [String]] 'data [提供]には' WSBodyWritable'があります(https://github.com/playframework/play-ws/blob/b95e3483fed79c063accbe88e8734d9b6db9d33a/play-ws-standalone/src/main /scala/play/api/libs/ws/DefaultBodyWritables.scala#L107) – Mikesname
@Mikesname:とても簡単です!私が言ったように、その要点はかなり古い...実際の答えを加えたいですか?それ以外の場合、私は質問を取り消すだろう... – Bastl