本地主機:8080 ?/ API/V1 /用戶/鮑勃/ reset_password EMAIL_ADDRESS = 鮑勃%40bob.com
然後其他時間,我得到: 本地主機:8080/API/V1 /用戶/鮑勃/ reset_password EMAIL_ADDRESS = 鮑勃%2540bob.com
在第二個的@已被編碼一次,40%則%又被編碼爲%25所以你最終%2540
如果我什麼都不做多等一下問題就消失了,這讓我覺得這是某種緩存問題,但我似乎無法弄清楚它是什麼。
本地主機:8080 ?/ API/V1 /用戶/鮑勃/ reset_password EMAIL_ADDRESS = 鮑勃%40bob.com
然後其他時間,我得到: 本地主機:8080/API/V1 /用戶/鮑勃/ reset_password EMAIL_ADDRESS = 鮑勃%2540bob.com
在第二個的@已被編碼一次,40%則%又被編碼爲%25所以你最終%2540
如果我什麼都不做多等一下問題就消失了,這讓我覺得這是某種緩存問題,但我似乎無法弄清楚它是什麼。
終於被確認爲一個錯誤,並在以後的版本中得到修復
因爲這不排除所有的時間我不知道這是否會幫助,但你嘗試編碼的網址?例如: org.apache.commons.httpclient.util.URIUtil.encodeAll(url);
我認爲發生的事情是,當您第一次將符號作爲符號發送時調用控制器。
然後將其編碼到響應中並將@轉換爲%40。我猜你什麼時候回來,並且通過瀏覽器重新發送,%40中的%被編碼爲%25,使其成爲%2540。
對不起,如果上面有混淆,很難解釋。
簡單的答案是,在將它傳遞到WS類之前,只需將%40的emailAddress變量替換爲@即可。在play框架中還有一個urlDecode()方法可以實現,我之前使用過play,但是我沒有使用這個方法。
我懷疑某種形式的URL重寫。你有沒有在你的服務器前運行的Apache Web服務器?也許一些RewriteRule
缺少[NE]
標誌。
您可以嘗試在http://groups.google.com/group/play-framework上詢問它們是否響應很快...... – opensas 2011-04-04 02:52:26
已經做了,沒有迴應 – dstarh 2011-04-04 03:22:49