Java Spring WebClient put映射:内容类型';application/json';不支持
我试图使用WebClient通过REST调用另一项服务,但我始终收到错误: org.springframework.web.reactive.function.UnsupportedMediaTypeException:不支持内容类型“application/json” 所有分配都有相同版本的依赖项,通过Postman调用资源可以很好地工作。问题是当第一个应用程序作为代理(客户端)尝试调用第二个应用程序(服务)时 我的服务器资源:Java Spring WebClient put映射:内容类型';application/json';不支持,java,rest,spring-boot,spring-webflux,spring-web,Java,Rest,Spring Boot,Spring Webflux,Spring Web,我试图使用WebClient通过REST调用另一项服务,但我始终收到错误: org.springframework.web.reactive.function.UnsupportedMediaTypeException:不支持内容类型“application/json” 所有分配都有相同版本的依赖项,通过Postman调用资源可以很好地工作。问题是当第一个应用程序作为代理(客户端)尝试调用第二个应用程序(服务)时 我的服务器资源: @RequestMapping(value = "/proper
@RequestMapping(value = "/properties")
@PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE)
@ResponseStatus(CREATED)
public void saveProperty(@Valid @RequestBody PropertyForm form) {
service.save(new PropertyImpl(form));
}
WebClient client = WebClient.create(serviceUrl);
Mono<Void> save(PropertyForm form) {
return client.put()
.uri("properties")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.body(BodyInserters.fromObject(form))
.retrieve()
.bodyToMono(Void.class);
}
我的客户资源:
@RequestMapping(value = "/properties")
@PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE)
@ResponseStatus(CREATED)
public void saveProperty(@Valid @RequestBody PropertyForm form) {
service.save(new PropertyImpl(form));
}
WebClient client = WebClient.create(serviceUrl);
Mono<Void> save(PropertyForm form) {
return client.put()
.uri("properties")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.body(BodyInserters.fromObject(form))
.retrieve()
.bodyToMono(Void.class);
}
我是否缺少一些依赖项来启用JSON contentType?这个例子很简单,但对我来说也很有问题
表格模型:
class PropertyForm {
private String group;
private String key;
private String value;
// getters & setters
}
来源:我终于找到了答案。问题其实出在发送表单上。表单的作用域是包,与setter/getter相同。在我将PropertyForm提取到API模块并将所有内容公开之后,它就开始工作了 因此,解决方案是用以下内容取代形式:
public class PropertyForm {
private String group;
private String key;
private String value;
// public getters & setters
}
感谢您的帮助和时间。有趣的是,我已经重新创建了您的确切环境,它适合我。你也可以提供PropertyForm类吗?这对我来说是最糟糕的情况。因为它从一开始就应该在理论上起作用。表单是只有getter的简单Pojo。我一下班就会链接源代码。你需要在你的类路径上有某种Object->Json编码器,例如Jackson2JSONeCoder,它可以从Object到JSONJson serilizer进行编码,因为我有完美的get映射。