首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从URL检索编码值

从URL检索编码值
EN

Stack Overflow用户
提问于 2012-09-26 18:04:17
回答 3查看 2K关注 0票数 1

我在URL...so中传递了一个编码的单点登录令牌,网址如下所示

代码语言:javascript
复制
 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中,为什么我在打印中得到了如此不同的值……

请帮帮忙......

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-26 19:07:43

如果你想解码,你会得到编码值,然后使用下面的代码。默认情况下,系统会为我们解码,但在您的情况下,它不会解码,您必须显式解码request.getParameter("token")的值。

代码语言:javascript
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2012-09-26 18:12:27

request.getParameter("token")对参数值进行解码,因此打印的值是URL中参数值的解码版本。

有关详细信息,请参阅Java EE, accent in url, request.getParameter wrong value

票数 3
EN

Stack Overflow用户

发布于 2012-09-26 18:15:43

在URL中,标记为URL encoded。这是必要的,因为某些字符在URL中具有特殊含义。

通过对值进行URL编码,这些特殊字符将被%nn代码替换,其中nn是特殊字符的字符代码。

Java会自动为您解码,这样当您调用request.getParameter("token")而不是URL编码值时,您就会得到实际的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12599282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档