啊鑫
2025-04-09 53a8212e781d469369b5418c125c5d3735a77a92
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.gs.xiaomi.util;
 
import com.gs.xiaomi.dto.BizDocument;
import com.gs.xiaomi.dto.ZfmWsApiRequest;
 
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.StringWriter;
 
public class SoapXmlBuilder {
 
    public static String build(ZfmWsApiRequest req) throws Exception {
        JAXBContext jaxbContext = JAXBContext.newInstance(BizDocument.class);
        Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
 
        StringWriter xmlWriter = new StringWriter();
        marshaller.marshal(req.getIvInfo(), xmlWriter);
 
        String innerXml = xmlWriter.toString().replace("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>", "").trim();
 
        String wrappedXml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n" + innerXml;
 
        return String.format("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" + "    <soapenv:Header/>\n" + "    <soapenv:Body>\n" + "        <urn:ZFM_WS_API>\n" + "            <IV_CODE>%s</IV_CODE>\n" + "            <IV_EVENT>%s</IV_EVENT>\n" + "            <IV_FLAG>%s</IV_FLAG>\n" + "            <IV_INFO><![CDATA[%s]]></IV_INFO>\n" + "            <IV_PASS>%s</IV_PASS>\n" + "            <IV_USER>%s</IV_USER>\n" + "        </urn:ZFM_WS_API>\n" + "    </soapenv:Body>\n" + "</soapenv:Envelope>", req.getIvCode(), req.getIvEvent(), req.getIvFlag(), wrappedXml, req.getIvPass(), req.getIvUser());
    }
}