Укажите необработанную строку запроса при использовании WebTarget
Я работаю с большим существующим проектом, который использует javax.ws.rs.client.WebTarget
поговорить с RESTful API. API разработан третьей стороной, и я не могу его контролировать. Мне нужно сделать запрос в следующем формате:
https://end.point.url/endpoint/id?data
К сожалению, я не могу понять, как указать такой запрос, используя WebTarget
, Я пытался с помощью path("endpoint/id?data")
, но это превращается в endpoint/id%3Fdata
и я получаю 404 обратно. Я пытался с помощью queryParam
указав пустое значение, которое получает меня endpoint/id?data=
- что приводит к ошибке обязательного параметра data
отсутствует.
Какой еще вариант есть? Замена WebTarget чем-то другим неосуществима, так как это повсеместно для большого проекта.
1 ответ
Во-первых, связанный вопрос: проблема с кодировкой URL в клиенте Jersey
После долгих исследований кажется, что единственный способ сделать это - указать весь URI при создании WebTarget, вот так:
Client client = ClientBuilder.newClient().register(authFeature);
WebTarget webTarget = client.target("https://end.point.url/endpoint/id?data")