Прежде всего, не пытайтесь изобретать велосипед . Создание URI с параметрами запроса является очень распространенным требованием, поэтому я настоятельно рекомендую вам использовать проверенное и надежное решение, а не писать свое собственное.
Позвольте мне немного расширить ответ , опубликованный Ян Хроник . В зависимости от стека, который вы используете в своем приложении, вы можете выбрать один из следующих подходов:
UriBuilder
от JAX-RS (представлен в Java EE 6)
public static String buildUri(String baseUri, Map<String, Object> queryParams) {
UriBuilder builder = UriBuilder.fromUri(baseUri);
queryParams.forEach((key, value) -> builder.queryParam(key, value.toString()));
return builder.toString();
}
public static String buildUri(String baseUri, Map<String, Object> queryParams) {
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(baseUri);
queryParams.forEach((key, value) -> builder.queryParam(key, value.toString()));
return builder.toUriString();
}
URIBuilder
от Apache HTTP Components
public static String buildUri(String baseUri, Map<String, Object> queryParams)
throws URISyntaxException {
URIBuilder builder = new URIBuilder(baseUri);
queryParams.forEach((key, value) -> builder.addParameter(key, value.toString()));
return builder.toString();
}