Как использовать openFeign для отслеживания перенаправления запроса HTTP POST с телом?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как использовать openFeign для отслеживания перенаправления запроса HTTP POST с телом?

Сообщение Anonymous »

Я обнаружил, что feign вызовет ошибку (сообщение об ошибке «ERROR HttpRetryException: невозможно повторить попытку из-за перенаправления в потоковом режиме»), если я использую его для отправки запроса POST со значением тела на сервер, который вернет Код состояния HTTP 302 для перенаправления. Если значение body не добавлено, то feign успешно последует за перенаправлением. Похоже, это ограничение sun.net.www.protocol.http.HttpURLConnection, которое блокирует перенаправление POST с телом. Итак, есть ли способ настроить feign так, чтобы в таком случае он следовал за перенаправлением?
Код и журналы ошибок показаны ниже.

Код: Выделить всё

public interface FeignPostRedirectClient {
@RequestLine("POST /redirect-server")
void sendPostRequestWithBodyToRedirectServer(Map formBodyParams);  //follow redirection FAIL
//void sendPostRequestWithBodyToRedirectServer();  //follow redirection OK
}

@Configuration
public class FeignConfiguration {
@Bean
public FeignPostRedirectClient feignPostRedirectClient() {
return Feign.builder()
.logLevel(Logger.Level.FULL)
.logger(new Slf4jLogger())
.encoder(new JacksonEncoder())
.decoder(new JacksonDecoder())
.options(new Request.Options(10, TimeUnit.SECONDS, 10, TimeUnit.SECONDS, true))
.target(FeignPostRedirectClient.class, "http://localhost:8082");
}
}

Map  formParams = new HashMap();
formParams.put("Username", "alice");
formParams.put("Password", "pass");
feignPostRedirectClient.sendPostRequestWithBodyToRedirectServer(formParams);
21 ноября 2022 21:53:49.880 DEBUG 3944 --- [ main] feign.Logger
: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]---> POST http://localhost:8082/redirect-server HTTP/1.1 2022-11-21 21:53:49.880 DEBUG 3944 --- [ main] feign.Logger

: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]
Content-Length: 49 2022-11 -21 21:53:49.880 DEBUG 3944 --- [

main] feign.Logger :
[FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]
2022-11-21 21:53:49.880 DEBUG 3944 --- [основной] feign.Logger
: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer] {
"Имя пользователя": "алиса", "Пароль": "пароль" } 2022-11-21 21:53:49.881
DEBUG 3944 --- [ main ] feign.Logger

: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]
---> END HTTP (49-байтовое тело) 2022-11-21 21:53:54.368 DEBUG 3944 --- [ main] feign.Logger :
[FeignPostRedirectClient# sendPostRequestWithBodyToRedirectServer]
POST http://localhost:8082/redirect-server HTTP/1.1 2022-11-21
21:53:54.591 DEBUG 3944 --- [ main] feign.Logger

: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]
Content-Length: 49 2022- 11-21 21:53:54.591 DEBUG 3944 --- [

main] feign.Logger :
[FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]
2022-11-21 21:53:54.592 DEBUG 3944 --- [ main ] feign.Logger
: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer] {
"Имя пользователя" : "алиса", "Пароль" : "пароль" } 2022-11-21 21:53:54.592
DEBUG 3944 --- [main] feign. Регистратор

: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]
---> END HTTP (49-байтовое тело) 2022-11-21 21:54:54.606 DEBUG 3944 --- [ main] feign.Logger :
[FeignPostRedirectClient# sendPostRequestWithBodyToRedirectServer]
POST http://localhost:8082/redirect-server HTTP/1.1 2022-11-21
21:54:54.842 DEBUG 3944 --- [ main] feign.Logger

: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]
Content-Length: 49 2022- 11-21 21:54:54.842 DEBUG 3944 --- [

main] feign.Logger :
[FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]
2022-11-21 21:54:54.842 DEBUG 3944 --- [ main ] feign.Logger
: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer] {
"Имя пользователя" : "алиса", "Пароль" : "пароль" } 2022-11-21 21:54:54.842
DEBUG 3944 --- [main] feign. Регистратор

: [FeignPostRedirectClient#sendPostRequestWithBodyToRedirectServer]
---> END HTTP (49-байтовое тело)


Подробнее здесь: https://stackoverflow.com/questions/745 ... -with-body
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»