2

最終的な目標は、Play! に渡される 2 つのクエリ パラメータを接続することです。Web サービス要求。次のようになります。

WS
.url(requestUri)
.withQueryString(finalQueries)

いくつかの演算子を使用しようとしましたが、次のように失敗しました:

val finalQueries = queryParams match {
        case Some(queries) =>
          tokenParam ++ queries
        case None =>
          tokenParam
}

エラー: value ++ is not a member of (String, String)

API ドキュメントはwithQueryString(String, String)*

withQueryStringアクセスするたびにクエリ文字列全体を完全に置き換えているように見えるため、Play! のメソッドとは少し混乱しています。クエリ文字列を適切に組み合わせる方法はありますか?

編集:サンプルのクエリ文字列は以下のとおりです (型の構文とその最終的な外観は少し混乱しています...):

val queryString = ("timeMin" -> "2012-08-20T01%3A11%3A06.000Z")

4

1 に答える 1

8

あなたのコードから、そうあるqueryParamsべきであるように私には思えますOption[(String, String)]、そしてエラーメッセージから、 私はあなたがこれを試すことができると思うにtokenParam違いありません:(String, String)

val finalQueries = Seq(tokenParam) ++ queryParams
WS
.url(requestUri)
.withQueryString(finalQueries:_*)

として扱うことがOptionできるのでSeq、それは機能します。Seq(1, 2) ++ Some(3)Seq(1, 2, 3)Seq(1, 2) ++ NoneSeq(1, 2)

次に、のように呼び出すことができる手段を.withQueryString受け入れます。 または、で呼び出して、コンパイラに何かのように扱うように指示することもできます。(String, String)*.withQueryString(param1, param2, andMore)
Seq: _*Seq.withQueryString(Seq(param1, param2, andMore): _*)

于 2012-08-30T17:39:06.087 に答える