2013-03-27 43 views
1

需要MD5哈希我的查询参数的Play! 2.0 web服务请求。这里的骨架方法,我放在一起处理散列:将Seq [(String,String)]转换为Play中的查询参数字符串! 2.0?

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=keepsgoing。不确定是否玩!有一个本地方法,如果任何人都知道一个简单的方法来做到这一点。谢谢您的帮助!

回答

3

在Play 2.0中没有这方面的便利方法。但是,这里是他们如何在自己的源代码中执行它:

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

(更改变量名称和剥离不必要的部分)。

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

+0

啊,感谢您的发现!我正在搜寻源代码,但我被困在搜索宁的方法。很有帮助 – crockpotveggies 2013-03-27 23:32:29

相关问题