首頁 >Java >java教程 >如何在 Java 中將 URI 字串解析為名稱-值集合?

如何在 Java 中將 URI 字串解析為名稱-值集合?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-18 22:05:11579瀏覽

How to Parse a URI String into a Name-Value Collection in Java?

將URI 字串解析為名稱-值集合

由於缺少與C#/.NET 的HttpUtility 等效的明確定義的Java。 ParseQueryString 方法,需要使用替代方法將 URI 字串解析為名稱-值集合。本答案探討了實作此功能的自訂 Java 實作。

用於URI 解析的Java 程式碼

以下Java 程式碼可用於將URI 字串拆分為名稱-值對集合:

public static Map<String, String> splitQuery(URL url) throws UnsupportedEncodingException {
    Map<String, String> query_pairs = new LinkedHashMap<>();
    String query = url.getQuery();
    String[] pairs = query.split("&");
    for (String pair : pairs) {
        int idx = pair.indexOf("=");
        query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
    }
    return query_pairs;
}

使用和範例

可以使用URL作為參數來呼叫此方法,它會傳回一個包含解析的名稱-值對的 Map。例如,使用問題中提供的 URI:

URL url = new URL("https://google.com.ua/oauth/authorize?client_id=SS&response_type=code&scope=N_FULL&access_type=offline&redirect_uri=http://localhost/Callback");
Map<String, String> query_pairs = splitQuery(url);
System.out.println(query_pairs.get("client_id")); // prints "SS"

此方法可以透過利用 Map 介面輕鬆存取已解析的值。需要注意的是,此方法中實作了 URL 解碼,以確保正確處理 URI 中的編碼字元。

增強功能

此解決方案的後續更新已解決額外的要求,例如處理具有相同鍵的多個參數和沒有值的參數。此外,也為那些使用較新 Java 版本的使用者提供了 Java8 版本。

由於此回應已獲得廣泛歡迎,因此所提供的 Java 程式碼已不斷完善,以提供更強大、更通用的 URI 解析方法。

以上是如何在 Java 中將 URI 字串解析為名稱-值集合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn