2013-04-05 37 views
0

我正在創建一個帶有框架和scala的web服務。該服務獲得一個網址和一種語言,並使用這些信息,但我無法將一個網址放入服務中。實現帶有框架的服務,其中一個參數是一個url

我有這樣的路線 GET /反/ $網址<(HTTP%3A%2F%2FA)> /:郎controllers.Application.getTranslation(網址:字符串,郎鹹平:字符串)

和應用: DEF getTranslation(IRI:字符串,郎:字符串)=動作{隱式請求=> 等

,我想接收像 '/反式/ HTP:// A/ES' (它的http而不是htp,但我不能在這裏寫)

它是可行的嗎?因爲我已經嘗試過所有的東西,而且我不能。它是一種傳遞url作爲參數的方式嗎?

回答

1

你必須在兩邊進行url轉義和unescape。這就是所謂的URL編碼或百分號編碼 https://en.wikipedia.org/wiki/Percent-encoding

這裏(因爲轉義字符使用與%開始組合重寫)是給你的信息的問題,如果您的客戶端是JS: Encode URL in JavaScript?

這裏有很好的scala庫,可以用來編碼和解碼URL persent編碼。 https://github.com/theon/scala-uri

我已經開始scala自己(我的playframework的prod工作大部分仍然在Java中),所以我不知道是否有更好的scala uri庫。

編輯: 所以我搜索了一下你讓我好奇: http://www.motobit.com/util/url-encoder.asp 你應該小心在左右兩邊的編碼。

+0

好的,謝謝你,這個我可以解碼和編碼的URL,但我仍然有問題。在路由文件中,我如何傳遞一個url:http:// localhost:9000/trans /'http://hello.com'/es我有定義的路由:GET/trans /:iri /:lang \t \t \t \t controllers.Application.getTranslation(url:String,lang:String)但它只適用於如果y通過編碼爲%的網址... – Mankx 2013-04-15 17:39:07

+0

以及您將收到的字符串作爲getTranslation的url參數(url,lang )將被轉義,那麼在使用它之前,你必須在函數中使用它。我不完全是你在這裏的問題?也許用一些代碼示例和用例來編輯你的問題?這會幫助我......幫助你? – 2013-04-16 09:06:13

+0

我的回答對你有幫助嗎? – 2013-05-15 09:14:16

相關問題