gpt4 book ai didi

Java URL编码

转载 作者:行者123 更新时间:2023-12-01 14:19:48 26 4
gpt4 key购买 nike

从我的 Web 应用程序中,我正在重定向到外部 URL,该 URL 中包含一些凭据作为 URL 字符串的一部分。我想在重定向之前单独对凭证部分进行编码。我有以下网址:

String url1 = "http://servername:7778/reports/rwservlet?server=server1&ORACLE_SHUTDOWN=YES&PARAMFORM=no&report=test.rdf&desformat=pdf&desname=test.pdf&destype=cache&param1=56738&faces-redirect=true&";

我将其编码为:

String URL = "userid=username/passwd@DBname";
encodedURL = URLEncoder.encode(URL, "UTF-8");
String redirectURL = url1 + encodedURL1;

这段代码生成的URL是

http://servername:7778/reports/rwservlet?server=server1&ORACLE_SHUTDOWN=YES&PARAMFORM=no&report=test.rdf&desformat=pdf&desname=test.pdf&destype=cache&param1=56738&faces-redirect=true&userid=%3Dusername%2Fpasswd%40DBname

正如我们在编码 URL 末尾看到的那样,仅对/等特殊字符进行了编码。即 userid=username/passwd@DBname 已变为 userid=%3Dusername%2Fpasswd%40DBname

我想生成一个 URL,其中包含整个字符串“username/passwd@DBname”编码。像这样的东西:

userid=%61%62

我怎样才能实现这个目标?

最佳答案

所以实际上你希望url变得有些不可读,而不需要解码,Base64编码需要解码(替换/-) .

是的,您可能会滥用 URL 编码。

String encodeURL(String s) {
byte[] bytes = s.getBytes("UTF-8");
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
String hex = String.format("%%%02X", ((int)b) & 0xFF);
sb.append(hex);
}
return sb.toString();
}

%% 是百分号本身,%02X 十六进制、2 位数字、零填充、大写。

请注意,某些浏览器会在鼠标悬停时显示已解码的此类链接。但你只是重定向。

关于Java URL编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17709979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com