-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Closed as not planned
Closed as not planned
Copy link
Description
Hello, the problem in short is that when using a custom Feign.Builder, I cannot use FeignClient to post a url-encoded form, it will post an empty string.
In particular, I have a FeignClient:
public interface FeignClientTest {
@PostMapping(value = "/test", consumes = {
MediaType.APPLICATION_FORM_URLENCODED_VALUE
})
String callTest(TestBody body);
record TestBody(
@FormProperty("test1") String test1,
@FormProperty("test2") String test2
){ }
}
And I create the instance by custom Feign.Builder:
@Import({FeignClientsConfiguration.class})
@Configuration
@RequiredArgsConstructor
public class FeignClientConfig {
private final Encoder encoder;
private final Decoder decoder;
private final Contract contract;
private Feign.Builder feignBuilder() {
return Feign.builder()
.encoder(new SpringFormEncoder())
.decoder(decoder)
.contract(contract)
.logLevel(Logger.Level.FULL);
}
@Bean
public FeignClientTest feignClientTest() {
return feignBuilder()
.logger(new Slf4jLogger(FeignClientTest.class))
.target(FeignClientTest.class, "http://127.0.0.1:8080/");
}
}
When I call it like this:
@Autowired
private FeignClientTest client;
@GetMapping("/something")
public String keep() {
return client.callTest(new FeignClientTest.TestBody("test1", "test2"));
}
I got these logs:
2023-08-11T18:55:52.421+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] ---> POST http://127.0.0.1:8080/test HTTP/1.1
2023-08-11T18:55:52.421+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] Content-Type: application/x-www-form-urlencoded; charset=UTF-8
2023-08-11T18:55:52.421+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest]
2023-08-11T18:55:52.422+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest]
2023-08-11T18:55:52.422+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] ---> END HTTP (0-byte body)
2023-08-11T18:55:52.452+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] <--- HTTP/1.1 200 (30ms)
2023-08-11T18:55:52.453+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] connection: keep-alive
2023-08-11T18:55:52.453+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] content-length: 12
2023-08-11T18:55:52.453+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] content-type: text/plain;charset=UTF-8
2023-08-11T18:55:52.453+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] date: Fri, 11 Aug 2023 10:55:52 GMT
2023-08-11T18:55:52.453+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] keep-alive: timeout=60
2023-08-11T18:55:52.453+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest]
2023-08-11T18:55:52.454+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] Hello World!
2023-08-11T18:55:52.454+08:00 DEBUG 53840 --- [nio-8080-exec-1] c.e.openfeignclienttest.FeignClientTest : [FeignClientTest#callTest] <--- END HTTP (12-byte body)
It seems that Feign post a empty body, is there anything I did wrong? Thank you in advance!
Metadata
Metadata
Assignees
Labels
No labels