收图片的网站,济宁网站建设电话,品牌的佛山网站建设价格,如何申请建设网站首页背景
调用第三方接口时#xff0c;它们的系统比较老#xff0c;只支持接收xml而不支持json#xff0c;默认的springboot RestTemplate不支持发送xml#xff0c;添加依赖就可以解决这个问题。
添加jackson-dataformat-xml依赖
FasterXML/jackson-dataformat-xml是一个xml…背景
调用第三方接口时它们的系统比较老只支持接收xml而不支持json默认的springboot RestTemplate不支持发送xml添加依赖就可以解决这个问题。
添加jackson-dataformat-xml依赖
FasterXML/jackson-dataformat-xml是一个xml编、解码库。
dependencygroupIdcom.fasterxml.jackson.dataformat/groupIdartifactIdjackson-dataformat-xml/artifactIdversionversion/version/dependency这个版本号应该填什么呢根据依赖关系spring-boot-starter-web----spring-webmvc----jackson-dataformat-xml找到pom中的配置。
dependencygroupIdcom.fasterxml.jackson.dataformat/groupIdartifactIdjackson-dataformat-xml/artifactIdversion2.9.8/versionscopecompile/scopeoptionaltrue/optional/dependency顺便说一下因为它是optional的所以要引用。
RestTemplate发送xml
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.HttpEntity;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;HttpHeaders headers new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_XML);
final URI uri UriComponentsBuilder.fromUriString(“url”).build().toUri();
User user new User();
HttpEntityUser request new HttpEntity(user, headers);
//响应是xml也会自动转为POJO
final Result result restTemplate.postForObject(uri,request , Result.class);
代码中的User、Result都是普通的POJO发送时会自动的转换为xmlPOJO中的属性会转换为xml中的节点如果要转换为节点的属性则在属性上添加JacksonXmlProperty。
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;Data
public class User{/***指定为属性*/JacksonXmlProperty(isAttribute true)private String name;/*** 默认的是节点*/private BigDecimal money;
}jackson-dataformat-xml常用的注解
jackson-dataformat-xml常用的几个注解有JacksonXmlElementWrapper、JacksonXmlProperty、JacksonXmlRootElement、JacksonXmlText
JacksonXmlElementWrapper 用在集合元素上可指定名称 JacksonXmlProperty 用在类的属性上可以指定名称及属性转为节点or属性 JacksonXmlRootElement 指定根元素名称用在类上 JacksonXmlText 转为xml后没有元素包裹是个文本节点
更多信息可参考Jackson XML annotations值得一提的是对于集合属性如果要同时指定容器、容器内元素的名称如下
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
JacksonXmlElementWrapper(localName users) //容器的名称
JacksonXmlProperty(localName user)//容器元素的名称
private ListUser users;