Spring RestTemplate如何将POJO与application/x-www-form-urlencoded一起使用?

Jus*_*tas 5 java spring resttemplate spring-boot

当我尝试将 POJO 与 MediaType.APPLICATION_FORM_URLENCODED 一起使用时

    ExampleRequest exampleRequest = exampleRequest();
    exampleRequest.setId("id");
    exampleRequest.setName("name");

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

    HttpEntity<ExampleRequest> exampleRequestEntity = new HttpEntity<>(exampleRequest, headers);

    restTemplate.postForObject(url, exampleRequestEntity, String.class)
Run Code Online (Sandbox Code Playgroud)

我得到:

org.springframework.web.client.RestClientException: No HttpMessageConverter for [ExampleRequest] and content type [application/x-www-form-urlencoded]
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用 POJO 代替application/x-www-form-urlencodedMultiValueMap<String, String> map

Ant*_*sty 2

FormHttpMessageConverter可能会丢失。您尝试过手动添加吗?

@SpringBootApplication
public class App extends WebMvcConfigurerAdapter {

    public static void main(String[] args) {
        SpringApplication.run(App.class);
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        FormHttpMessageConverter converter = new FormHttpMessageConverter();
        MediaType mediaType = new MediaType("application","x-www-form-urlencoded", Charset.forName("UTF-8"));
        converter.setSupportedMediaTypes(Arrays.asList(mediaType));
        converters.add(converter);
        super.configureMessageConverters(converters);
    }
}
Run Code Online (Sandbox Code Playgroud)

(与 Spring Boot 相关)