Кодирование URL-адреса с помощью точек с запятой (;) в Java с использованием UriComponentsBuilderJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Кодирование URL-адреса с помощью точек с запятой (;) в Java с использованием UriComponentsBuilder

Сообщение Anonymous »

Я работаю над кодированием точек с запятой (;) в параметрах URL-запроса с помощью Java. Точки с запятой должны быть закодированы как %3B, но я столкнулся с проблемой, из-за которой они либо дважды кодируются как %253B, либо вообще не кодируются.
Вот что я я пробовал:
var rawSemicolon = String.join(";",
Arrays.stream(endpoints)
.map(MyEndpointObject::toString)
.toArray(String[]::new));

System.out.println(UriComponentsBuilder.fromPath("/foo/bar")
.queryParam("query1", rawSemicolon)
.queryParam("query2", URLEncoder.encode(rawSemicolon, StandardCharsets.UTF_8))
.build().toUri());

System.out.println(UriComponentsBuilder.fromPath("/foo/bar")
.queryParam("query1", rawSemicolon)
.queryParam("query2", URLEncoder.encode(rawSemicolon, StandardCharsets.UTF_8))
.build(false).toUri());

var semicolonEncoded = String.join("%3B",
Arrays.stream(endpoints)
.map(VehicleDataEndpoint::toString)
.toArray(String[]::new));

System.out.println(UriComponentsBuilder.fromPath("/foo/bar")
.queryParam("query1", semicolonEncoded)
.queryParam("query2", URLEncoder.encode(semicolonEncoded, StandardCharsets.UTF_8))
.build().toUri());

System.out.println(UriComponentsBuilder.fromPath("/foo/bar")
.queryParam("query1", semicolonEncoded)
.queryParam("query2", URLEncoder.encode(semicolonEncoded, StandardCharsets.UTF_8))
.build(false).toUri());

Выход:
/foo/bar?query1=endpoint1;endpoint2&query2=endpoint1%253Bendpoint2
/foo/bar?query1=endpoint1;endpoint2&query2=endpoint1%253Bendpoint2
/foo/bar?query1=endpoint1%253Bendpoint2&query2=endpoint1%25253Bendpoint2
/foo/bar?query1=endpoint1%253Bendpoint2&query2=endpoint1%25253Bendpoint2


Подробнее здесь: https://stackoverflow.com/questions/792 ... ntsbuilder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»