ホームページ > Java > &#&チュートリアル > Java で URI 文字列を解析して名前と値のコレクションを作成する方法

Java で URI 文字列を解析して名前と値のコレクションを作成する方法

Mary-Kate Olsen
リリース: 2024-12-18 22:05:11
オリジナル
543 人が閲覧しました

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 インターフェイスを利用して解析された値に簡単にアクセスできます。 URI 内のエンコードされた文字を確実に正しく処理するために、このメソッドでは URL デコードが実装されていることに注意することが重要です。

機能拡張

このソリューションのその後の更新では、この問題が解決されました。同じキーを持つ複数のパラメーターや値のないパラメーターの処理などの追加の要件。さらに、より新しい Java バージョンを使用しているユーザー向けに Java8 バージョンが提供されています。

この回答が大きな人気を集めたため、提供された Java コードは継続的に改良され、URI 解析に対するより堅牢で汎用性の高いアプローチを提供しています。

以上がJava で URI 文字列を解析して名前と値のコレクションを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート