將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中文網其他相關文章!