![](/img/trans.png)
[英]How to send body in restTemplate as application/x-www-form-urlencoded
[英]Spring RestTemplate how to use POJO with application/x-www-form-urlencoded?
当我尝试将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)
我得到:
org.springframework.web.client.RestClientException: No HttpMessageConverter for [ExampleRequest] and content type [application/x-www-form-urlencoded]
有什么方法可以将POJO与application/x-www-form-urlencoded
而不是MultiValueMap<String, String> map
?
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);
}
}
(与弹簧靴有关)
可以使用FormHttpMessageConverter
,它能够将数据与application/x-www-form-urlencoded
媒体类型所需的MultiValueMap<String, String>
相互转换。 将以下配置添加到实现WebMvcConfigurer的类中。
@Bean
public FormHttpMessageConverter formHttpMessageConverter() {
MediaType mediaType = new MediaType("application", "x-www-form-urlencoded",
Charset.forName("UTF-8"))
FormHttpMessageConverter formHttpMessageConverter= new FormHttpMessageConverter();
formHttpMessageConverter.setSupportedMediaTypes(Collections.singletonList(mediaType));
return formHttpMessageConverter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(formHttpMessageConverter());
super.configureMessageConverters(converters);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.