簡體   English   中英

從網址檢索編碼值

[英]Retreiveing Encoded Value from URL

我在URL中傳遞了編碼的SSO令牌...因此URL看起來像

 http://127.0.0.1:7101/CRMOD_UCM-Sankalp-context-root/BrowseFile.jsp?token=%246%24zhxjx%2fpz6dVucl9cgG43ii2Tr4qVnNbeqJg8jCy6Jj7vRvXN4%3d%3b%246%24GlRGp%2fxfEM308NZGmY%2fhjHav2yjHSvbww1l0%2fCcCtcVjzl%2bCQFlQPdBRKO0t1XUmF0I6xLmfQ%2fnb7VgJeSYnvrAb9YUQQ3tvr%2fBZ%2bIRZiBAGU2%2fZg%3d

但是當我獲取變量的值並使用out.println(“ SSO Token:” + request.getParameter(“ token”)))打印時 它打印

$ 6 $ zhxjx / pz6dVucl9cgG43ii2Tr4qVnNbeqJg8jCy6Jj7vRvXN4 =; $ 6 $ GlRGp / xfEM308NZGmY / hjHav2yjHSvbww1l0 / CcCtcVjzl + CQFlQPdBRKO0t1XUmF0I6xLmfQ / nb7VgJeSYnvrAb9YUQQ3tvr / BZ + IRZiBAGU2 / ZG =

URL中存在正確的令牌,為什么我在打印中得到了如此不同的值...

請幫忙......

request.getParameter("token")解碼參數值,因此輸出的值是URL中參數值的解碼版本。

有關更多信息請參見Java EE,URL中的重音,request.getParameter錯誤值

在URL中,令牌是URL編碼的 這是必需的,因為某些字符在URL中具有特殊含義。

通過對值進行URL編碼,這些特殊字符將被%nn代碼替換,其中nn是特殊字符的字符代碼。

Java自動為您解碼它,以便您在調用request.getParameter("token")時獲得實際值,而不是URL編碼的值。

如果要解碼,則獲取編碼值,然后使用以下代碼。 默認情況下,系統會為我們解碼,但在您的情況下不會解碼,因此您必須顯式解碼request.getParameter(“ token”)的值。

String token = request.getParameter("token").toString();
// To decode url
String decodedtoken = URLDecoder.decode(token , "UTF-8");
System.out.println("Decoded token value "+ decodedtoken);

// To encode url 
String encodedtoken = URLEncoder.encode(token , "UTF-8"); 
System.out.println("Encoded token value "+ encodedtoken);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM