Scala 将Seq[(String,String)]转换为正在使用的查询参数字符串!2.0?

Scala 将Seq[(String,String)]转换为正在使用的查询参数字符串!2.0?,scala,playframework-2.0,Scala,Playframework 2.0,需要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)]是将查询

需要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)]
是将查询参数序列传递给播放的合适类型!网络服务。上下文:

  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=keepsgoon
。不知道是否玩!有一个本机方法,或者如果有人知道一个简单的方法来做到这一点。谢谢你的帮助

在Play 2.0中没有方便的方法。但是,他们在自己的源代码中是这样做的:

params.map(pair => pair._1 + "=" + URLEncoder.encode(pair._2, "UTF-8")).mkString("&")
(更改了变量名并删除了不必要的部分)


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

Ah感谢您的发现!我在搜索源代码,但我一直在搜索ning的方法。很有帮助