将Seq [(String,String)]转换为Play中的查询参数字符串! 2.0?

时间:2013-03-27 23:02:10

标签: scala playframework-2.0

需要MD5哈希我的查询参数为Play! 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。不确定是否玩!有一个本机方法,或者如果有人知道一个简单的方法来做到这一点。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

在Play 2.0中没有这方面的便利方法。但是,这是他们在自己的源代码中如何做到这一点:

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

(更改了变量名并删除了不必要的部分)。

对于更高级的选项,您还可以在Apache HttpClient中使用URLEncodedUtils