Scala 将Seq[(String,String)]转换为正在使用的查询参数字符串!2.0?
需要MD5散列我的查询参数播放!2.0 web服务请求。下面是我为处理散列而准备的骨架方法: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)]是将查询
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的方法。很有帮助