如何用xml发送请求报文,接收回执报文xml,转成对象

现在需要调用第三方接口,接口名为TQService,方法名为queryTQInfo

img

我现在从前端接收到一个对象,如何把他封装成xml的形式,发送请求报文

img

发完请求报文之后,如何接受回执报文xml,把xml转成对象,响应到页面

1.你可以把返回的数据贴出来看看
2.可以用Gson把接收到的数据转化成实体类

方式一:解析固定格式xml报文更方便,但未找到使用泛型时,解析的方式;
方式二:可根据不同接口,报文不同,改变实体(更复杂,功能更强大);
方式三:可使用泛型;

这里只说下方式三,比较简单:

import com.alibaba.druid.util.StringUtils;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;

public class XmlToEntity {


    public static <T> T xmlToBean(String xmlStr, Class<T> body) throws JAXBException {
        if (null == body || StringUtils.isEmpty(xmlStr)) {
            return null;
        }
        JAXBContext context = JAXBContext.newInstance(body);
        Unmarshaller unmarshaller = context.createUnmarshaller();
        StringReader stringReader = new StringReader(xmlStr);
        Object unmarshal = unmarshaller.unmarshal(stringReader);
        return (T) unmarshal;
    }

    public static <T> String beanToXml(Class<T> body) throws JAXBException {
        JAXBContext context = JAXBContext.newInstance(body);
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
        //去掉请求头
        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
        StringWriter stringWriter = new StringWriter();
        stringWriter.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        marshaller.marshal(body, stringWriter);
        return stringWriter.toString();
    }
}