#java
#java
Вопрос:
У меня есть неполные URL-адреса, которые я перенаправляю (у меня нет полного URL-адреса), например
a.jsp?id=269101|14000
и
b.jsp?action=inamp;id=239394|2000amp;inmethod=
Я хотел закодировать "|"
только символ канала, поэтому я начал с java.net.URI
class, но он запрашивает полный URL.Итак, я использовал URLEncoder, но он кодирует весь URL.
Я знаю, что могу искать |
в url и кодировать его напрямую, но каков был бы наилучший подход?
Комментарии:
1. Почему ваша строка уже собрана вместе, но с незакодированными частями? Вам следует избегать этого, поскольку это очень затрудняет его правильное кодирование. Используйте URLEncoder для кодирования значений, пока они все еще находятся за пределами конечной строки.
Ответ №1:
Использование String.replace()
:
String myUrl = "b.jsp?action=inamp;id=239394|2000amp;inmethod=";
myUrl = myUrl.replace("|","|");
Ответ №2:
Вам нужно использовать URLEncoder
значение параметра для каждого запроса, которое необходимо закодировать.
String url = "b.jsp?action=in"
"amp;id=" URLEncoder.encode("239394|2000", StandardCharsets.UTF_8)
"amp;inmethod=";
System.out.println(url); // prints: b.jsp?action=inamp;id=239394|2000amp;inmethod=
Ответ №3:
Использование URLEncoder — правильный путь. Однако вы должны выполнить кодирование перед созданием своего полного URL-адреса. использование его для вашего полного URL-адреса приведет к кодированию всех специальных символов URL-адреса. Это не то, что вы хотите здесь
Измените свой код на что-то вроде этого
String url = "a.jsp?id=" URLEncoder.encode("269101|14000",StandardCharsets.UTF_8);