【Java】 URL の クエリ文字列 を組み立てる方法 【いくつか】
【Java】 URL の クエリ文字列 を組み立てる方法 【いくつか】
1.StringBuilder を使う
// クエリ文字列をくっつける元の URL
String path = "https://www.google.co.jp/search";// クエリ文字列を連想配列に入れる
Map<String, String> map = new HashMap<String, String>();
map.put("q", "Java");// クエリ文字列組み立て・URL との連結
// 必ず末尾に余計な文字 ("?" or "&") が残るので、
// String に変換時、substring で削る
StringBuilder builder = new StringBuilder(path);
builder.append("?");
for (Map.Entry<String, String> param: map.entrySet()) {
builder.append(param.getKey());
builder.append("=");
builder.append(param.getValue());
builder.append("&");
}System.out.println(builder.substring(0, builder.length() - 1));
StringBuilder で地道に連結する場合、最初のみか最後のみ、"&"を取り除かなければいけませんが、連想配列だとそれが判別できないので、連結し終わってから最後の文字を削除します。もし連想配列が空なら、クエッションマークが削除されます。
2.StringJoiner を使う
// クエリ文字列をくっつける元の URL
String path = "https://www.google.co.jp/search";// クエリ文字列を連想配列に入れる
Map<String, String> map = new HashMap<String, String>();
map.put("q", "Java");// まずクエリ文字列を組み立てる
StringJoiner query = new StringJoiner("&");
for (Map.Entry<String, String> param: map.entrySet()) {
query.add(param.getKey() + "=" + param.getValue());
}// それから URL を組み立てる
StringJoiner url = new StringJoiner("?");
url.add(path);
url.add(query.toString());System.out.println(url.toString());
3.StringJoiner を使う (手抜きver)
// クエリ文字列をくっつける元の URL
String path = "https://www.google.co.jp/search";// クエリ文字列を連想配列に入れる
Map<String, String> map = new HashMap<String, String>();
map.put("q", "Java");// クエリ文字列組み立て・URL との連結
StringJoiner url = new StringJoiner("&", path + "?", "");
for (Map.Entry<String, String> param: map.entrySet()) {
url.add(param.getKey() + "=" + param.getValue());
}System.out.println(url.toString());