簡體   English   中英

如何在連接字符串中“轉義”用戶名:密碼對?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM