[英]Spring Boot can convert Xml response body to Java object, but can't convert Java object to Xml request body
当我尝试发送内容类型为application/vnd.vmware.vcloud.session+xml;version=5.6
的请求时,Spring Boot给出以下异常:
请求处理失败; 嵌套的异常是org.springframework.web.client.RestClientException:
无法写入请求:找不到适合请求类型[com.vmware.vcloud.v1.SessionType]和内容类型[application / vnd.vmware.vcloud.session + xml; version = 5.6]的HttpMessageConverter
但是,当我从具有相同内容类型的服务器获得响应时,spring-boot成功将响应转换为SessionType
对象。
为什么在我尝试发送请求时,Spring Boot会给出上述异常?
我发现了问题。 Jaxb2RootElementHttpMessageConverter
可以读取用@XmlRootElement
或@XmlType
注释的类。
但是它只能写以@XmlRootElement
注释的类。 由于我的类未使用@XmlRootElement
进行注释, @XmlRootElement
其canWrite方法返回false
。
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
return (clazz.isAnnotationPresent(XmlRootElement.class) || clazz.isAnnotationPresent(XmlType.class)) &&
canRead(mediaType);
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
return (AnnotationUtils.findAnnotation(clazz, XmlRootElement.class) != null && canWrite(mediaType));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.