Установка параметров запроса в тестовом вызове из Джерси

У меня есть Java-сервлет на основе Джерси:

@Path("foo")
class Foo {
  @GET
  @Path("bar")
  public Response bar(@QueryParam("key") String value) {
    // ...
  }
}

Я могу назвать это в Tomcat просто так:

http://localhost:8080/container/foo/bar?key=blah

Однако в моем JerseyTest с использованием Grizzly он неправильно обрабатывает параметры. Этот тестовый пример возвращает ошибку 404:

@Test
public void testBar() {
  final Response response = target("foo/bar?key=blah").request().get();
}

Я подозреваю, что проблема в том, что он ищет ресурс с именем foo/bar?key=blah, а не пытается передать key=blah ресурсу по адресу foo/bar. Если я передам только "foo/bar" в target(), я получу 500, так как код выдает исключение для нулевого параметра.

Я просмотрел документацию по тесту Джерси и несколько примеров, и я нашел некоторые загадочные вещи, которые могли быть для передачи параметров в GET, но ни один из них не выглядел так, как будто он присваивал значения параметрам, поэтому я не был уверен, как Я бы использовал это.

Как я могу передать свое значение для этого параметра?


person kwiqsilver    schedule 15.07.2014    source источник


Ответы (1)


JavaDoc в WebTarget.queryParam() должен дать вам ответ на вашу проблему. В основном вам нужно преобразовать свой код во что-то вроде:

target("foo/bar").queryParam("key", "blah").request().get()
person Michal Gajdos    schedule 16.07.2014
comment
Просто подсказка: убедитесь, что вы вызываете queryParam перед request. Свободный API не позволит этого впоследствии. Заняло минуту. - person Tim Büthe; 06.07.2015
comment
что я могу использовать для почтового запроса? - person Md. Tahmid Mozaffar; 09.03.2017
comment
Спасибо, господин, за то, что дал нам Stackoverflow - person Johan Witters; 16.01.2018
comment
как добавить несколько параметров несколько ключей? - person user1735921; 22.01.2018