我在URL...so中传递了一个编码的单点登录令牌,网址如下所示
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中,为什么我在打印中得到了如此不同的值……
请帮帮忙......
发布于 2012-09-26 19:07:43
如果你想解码,你会得到编码值,然后使用下面的代码。默认情况下,系统会为我们解码,但在您的情况下,它不会解码,您必须显式解码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);发布于 2012-09-26 18:12:27
request.getParameter("token")对参数值进行解码,因此打印的值是URL中参数值的解码版本。
有关详细信息,请参阅Java EE, accent in url, request.getParameter wrong value。
发布于 2012-09-26 18:15:43
在URL中,标记为URL encoded。这是必要的,因为某些字符在URL中具有特殊含义。
通过对值进行URL编码,这些特殊字符将被%nn代码替换,其中nn是特殊字符的字符代码。
Java会自动为您解码,这样当您调用request.getParameter("token")而不是URL编码值时,您就会得到实际的值。
https://stackoverflow.com/questions/12599282
复制相似问题