当我尝试使用内容类型application/vnd.vmware.vcloud.session+xml;version=5.6
spring boot发送请求时,会出现以下异常:
请求处理失败;嵌套异常是 org.springframework.web.client.RestClientException:
无法写 请求:找不到适合请求类型的HttpMessageConverter [com.vmware.vcloud.v1.SessionType] 和内容类型 的 [应用/ vnd.vmware.vcloud.session + xml的;版本= 5.6Hz]
但是当我从服务器获得具有相同内容类型的响应时,spring-boot成功地将响应转换为SessionType
对象。
为什么在我尝试发送请求时,spring boot会出现上述异常?
答案 0 :(得分:0)
我发现了问题。 Jaxb2RootElementHttpMessageConverter
可以阅读使用@XmlRootElement
或@XmlType
注释的类。
但它只能编写用@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));
}