Кодировка строки запроса UrlBuilder не работает

#java #url #spring-webclient

Вопрос:

Строка запроса WebClient urlbuilder изменилась

 String key = "bEyBOCB4SoL/1gI%s"

webClient.get()
.scheme("http")
.host("www.localhost:8080")
.queryParam("key", URLEncoder.encode(key, StandardCharsets.UTF_8.toString()))
.build()

... send request
 

строка запроса изменилась «bEyBOCB4SoL%252F1gI%25»

происхождение = «bEyBOCB4SoL/1gI%s»

Ответ №1:

Вы трижды кодируете значение.

  • key Строка уже закодирована, смотрите / , какое значение является закодированным / .
  • Затем вы вручную кодируете , вызывая URLEncoder.encode(...) , который будет кодироваться % как % .
  • Затем queryParam(...) метод будет снова кодироваться, который будет кодироваться % как % .

Результат таков %252F , как вы видите.

Измените код:

 String key = "bEyBOCB4SoL/1gI%s";
 
 .queryParam("key", key)
 

В результате будет: bEyBOCB4SoL/1gI%s

Комментарии:

1. я имею в виду, когда включаю » % » в строку. url добавил «25» за»%», как я могу это решить?

2. я заменил » % » на «%», но ничего не изменилось

3. @JavaOne, конечно, кодировка меняется % на % . Как вы думаете, что делает кодировка URL, если не это?

4. API требуется»%», но я отправляю «%», как я могу это сделать??