[英]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.