1

Play のクエリ パラメータを MD5 ハッシュする必要があります。2.0 Web サービス要求。ハッシュを処理するために私がまとめているスケルトンメソッドは次のとおりです。

  def API_SIG(params: Seq[(String,String)]) = {
    val hashParams = params.sortBy(_._1) :+ ("api_secret",API_SECRET)
    getMD5Hash(hashParams.toStringWhateverNativeMethod)
  }

これSeq[(String,String)]は、一連のクエリ パラメータを Play! ウェブサービス。コンテキスト:

  val requestParams = Seq() // nothing here, yet
  val finalParams = Seq(("api_key",API_KEY)) ++ requestParams
  val sigParams = requestParams :+ ("api_secret",API_SECRET)
  val signature = ("sig" -> API_SIG(params))
  val finalQueries = Seq(sigParam) ++ finalParams

  val request = 
    WS
    .url(requestUri)
    .withQueryString(finalQueries:_*)

要約: 基本的に、Seq[(String,String)]を のようなクエリ パラメータ文字列に変換する必要がありますparam=value&more=better&etc=keepsgoing。Play! これにはネイティブな方法があります。または、誰かがこれを行う簡単な方法を知っている場合。助けてくれてありがとう!

4

1 に答える 1

3

Play 2.0 には、これに対する便利な方法はありません。ただし、独自のソースコードでそれを行う方法は次のとおりです。

params.map(pair => pair._1 + "=" + URLEncoder.encode(pair._2, "UTF-8")).mkString("&")

(変数名を変更し、不要な部分を削除しました)。

より高度なオプションについては、Apache HttpClient でURLEncodedUtilsを使用することもできます。

于 2013-03-27T23:28:44.100 に答える