2013-03-27 74 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

相關問題