#java #spring #rest #spring-mvc #resttemplate
#java #spring #rest #spring-mvc #resttemplate
Вопрос:
java.lang.Исключение IllegalArgumentException: [https://localhost/pcap/search?stime=20110930.000000amp;etime=20110930.235959amp;bpf=tcp
Вот вызов, который я сделал, используя Spring RESTful Template:
final PcapSearchResponse pcapSearchResult = restTemplate.postForObject(
nPulseApiUris.get(2), null, PcapSearchResponse.class, sTime, eTime, bpf);
Я не понимаю, почему это плохой URL-адрес? Я использовал UTF-8 для кодирования символа «.», но я не уверен, почему мой URL-адрес по-прежнему недействителен.
Ваша помощь очень ценится!
Спасибо за вашу помощь!!!
Ответ №1:
В документации RestTemplate
упоминается, что:
Кроме того, методы String-argument предполагают, что строка URL не закодирована.
Итак, при передаче вашего URL в виде строки не кодируйте его. Spring позаботится об этом.
Комментарии:
1. Привет, Божо, большое тебе спасибо за твой ответ. Да, я не кодировал URL. В моем коде URL выглядит следующим образом, в котором nPulseApiUris имеет тип List<String>:
https://localhost/pcap/search?stime={stime}amp;amp;etime=${etime}amp;amp;bpf=${bpf}
Ваша помощь очень ценится!2. Привет @Bozho, я очень ценю ваш ответ. Параметры моего запроса, которые я пытаюсь отправить в URI RESTful service
https://localhost/pcap/search
, следующие:stime=20110930.000000 etime=20110930.235959 bpf=tcp
Большое вам спасибо, Божо!3. Выглядит нормально. Теперь избавьтесь от amp
4. Если я избавлюсь от амперсанда, я не уверен, как я собираюсь отправлять эти параметры в URI RESTful service. Поэтому я подумал, что если я добавлю его, это сработает. Спасибо за вашу помощь!!
5. Не удаляйте весь amperasnd, но и не записывайте его в кодированном виде. Поэтому
amp;
вместоamp;amp;