これは、サーバーの絶対URIである:Javaで2つのURIを「マージする」方法
URI base = new URI("http://localhost/root?a=1");
これは相対URIである:
URI rel = new URI("/child?b=5");
は今、私は絶対に比べて1つを適用し、受信しようとしています:
URI combined = base + rel; // somehow
assert combined.equals(new URI("http://localhost/root/child?a=1&b=5"));
JDKやライブラリでこのような操作を行うことはできますか?あなたはURL#getQueryを呼び出すことによって手動で抽出し、新しいURLに同様
何かをそれらを追加する必要があります、マージされたURLにベースURLのパラメータを渡すために
スラッシュで始まる相対パスがホストに対して相対的であるため、結果は 'http:// localhost/child?b = 5'であると思います(スラッシュがない場合でも、 「ルート」ビットはクエリ文字列と同様に置換される)。 –
@SimonRichterは理にかなっています。私はスラッシュを削除する準備ができています。マージを達成する方法を教えてください:) – yegor256
パラメータの衝突の場合、どうしたらよいでしょうか? 'root?a = 1'と' child?a = 5'? 'a = 1'または' a = 5'? – home