gpt4 book ai didi

java - 你怎么 'escape'一个用户名:password pair in a connection string?

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:58 25 4
gpt4 key购买 nike

我们有一个像这样构建的连接字符串:

http://${i.user}:${i.pass}@${i.host}:22

但是,如果该用户密码包含“@”,那么我们将得到如下字符串:

http://user:p@ss@1.2.3.4:22

这显然会使脚本失效。有没有办法逃避第一个 @,或者类似的东西?

谢谢

最佳答案

必须对 URI 的用户信息部分中的“@”等字符进行转义。解析此类 URI 时,URI 使用者应取消转义任何转义字符:

import java.net.URI;
import java.net.URISyntaxException;

public class URITest {

public static void main(String[] args) throws URISyntaxException {
URI uri = new URI("http", "user:p@ss", "example.com", -1,
null, null, null);
System.out.println(uri.toString());

URI uri2 = new URI(uri.toString());
System.out.println(uri2.getUserInfo());
}
}

在我的系统上,输出:

http://user:p%40ss@example.com
user:p@ss

在最初的问题中,看起来您在构造 URI 时没有转义“@”。在您对@leblma 的评论中,听起来好像使用 URI 的任何东西都没有对 % 序列进行转义。

关于java - 你怎么 'escape'一个用户名:password pair in a connection string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21494106/

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