[英]How do you 'escape' a username:password pair in a connection string?
我們有一個像這樣構建的連接字符串:
http://${i.user}:${i.pass}@${i.host}:22
但是,如果該用戶密碼包含“@”,那么我們最終得到一個如下字符串:
http://user:p@ss@1.2.3.4:22
這顯然會拋棄腳本。 有沒有辦法逃脫第一個@,或者那種效果?
謝謝
用“%40”替換用戶或密碼中的每個“@”
必須轉義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的任何事情都不會破壞%序列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.