Даже если конечная точка находится на том же сервере, клиент по-прежнему ожидает полный URL.Если вы не хотите использовать статический URL-адрес, вы можете получить базовый путь из UriInfo
, который вы можете вставить в метод ресурса.
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getResult(@Context UriInfo uriInfo) {
// you might need to play around with this. I'm not sure exactly
// the base will be. Do some debugging if needed.
URI uri = uriInfo.getBaseUriBuilder()
.path("/API/v1/keys")
.build();
WebTarget target = client.target(uri);
Response response = target.request().get();
...
}
Также обратите внимание, что вы не можете просто вернутьResponse
.Вы должны получить любой ответ это.Самый общий способ сделать это - прочитать его как InputStream
и просто вернуть его.Но вы также должны проверить состояние запроса клиента, чтобы убедиться, что он был успешным.Может быть, что-то вроде
if (response.getStatus() == 200) {
return Response.ok(response.readEntity(InputStream.class)).build();
} else {
return Response.serverError().build();
}