簡體   English   中英

Spring Boot可以將Xml響應主體轉換為Java對象,但是不能將Java對象轉換為Xml請求主體

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM