Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java URL编码_Java_Url_Encoding - Fatal编程技术网

Java URL编码

Java URL编码,java,url,encoding,Java,Url,Encoding,在我的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&a

在我的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的末尾所看到的,只有像/这样的特殊字符被编码。i、 e.
userid=用户名/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位数字,零填充,大写


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

这毫无意义。您是否意识到,这仍然是可解码的,而无需一厢情愿的最终用户的任何努力?你确定没有混淆编码和加密吗?我只是不想直接显示URL。我知道这可能存在潜在的安全漏洞,但我的应用程序需要这样做。我同意它是可解码的。谢谢你的帮助。