Клиент не может отправлять и HttpRequest напрямую. Он построит один из параметров клиента.
Я попытался отправить запрос на перенаправление в теле клиента, но получил ошибку переполнения стека: Джексон не может преобразовать его в строку.
Вы не можете изменить URI в запросе, чтобы отправить его обратно, к сожалению, ни одна реализация HttpRequest не имеет сеттера для URI.
Если вы действительно хотите отправить полный запрос (заголовок, тело, params ...) вы можете попробовать настроить прокси.
Иначе, если вам не нужно передавать полный запрос, вы можете передать через клиента то, что вам нужно:
Client пример:
@Client("http://localhost:8080/test")
public interface RedirectClient {
@Get("/redirect")
String redirect(@Header(value = "test") String header);
}
Контроллер:
@Slf4j
@Controller("/test")
public class RedirectController {
@Inject
private RedirectClient client;
@Get
public String redirect(HttpRequest request){
log.info("headers : {}", request.getHeaders().findFirst("test"));
return client.redirect(request.getHeaders().get("test"));
}
@Get("/redirect")
public String hello(HttpRequest request){
log.info("headers : {}", request.getHeaders().findFirst("test"));
return "Hello from redirect";
}
}
Я сделал это для одного заголовка, но вы можете сделать это с телом (если не методом GET), для параметров запроса, и т. д.