基于webservice soap协议利用xml格式自定义报文进行传输和解析返回报文(实例)

一.发送自定义soap报文(内嵌jsonString)获取返回报文工具类

 

import com.meeno.apiservice.framework.BusinessException;
import javax.xml.soap.*;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import java.io.ByteArrayOutputStream;

/**
 * 发送自定义soap报文(内嵌jsonString)获取返回报文工具类
 */
public class SoapUtil {
    //对接服务地址
    private String addressUrl="http://XXXXXXXX";


    public SoapHepler(String addressUrl) {
        if(addressUrl!=null&&!"".equals(addressUrl.trim())){
            this.addressUrl = addressUrl;
        }
    }
    /**
     * 添加所需信息
     * @param bodyJsonStr  请求体json
     * @param svcname      服务名称
     * @param svccode      服务编码
     * @param svcver       服务版本
     * @param orisys       来源系统标识
     * @param trantime     交易发起时间
     * @param tranno       全局交易流水号
     * @param branchno     操作员机构代码op
     * @param userid       用户IDop
     * @param tokenid      口令或令牌op
     * @param signature    数字签名op
     * @param branchnoo    机构代码
     * @param destsys      目标系统标识
     * @return
     */
    public String sendSoapXml(String bodyJsonStr,
                              String svcname, String svccode,
                              String svcver,String orisys,
                              String trantime,String tranno,
                              String branchno,String userid,
                              String tokenid,String signature,
                              String branchnoo,String destsys) {
        String AUTH_PREFIX = "cl";
        String AUTH_NS = "http://www.e-chinalife.com/soa/";
        String XSD_NS = "http://www.w3.org/2001/XMLSchema";
        String XSI_NS = "http://www.w3.org/2001/XMLSchema-instance";
        try {
            //实例化一个soap连接对象工厂
            SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();
            //实例化一个连接对象
            SOAPConnection connection = soapConnFactory.createConnection();
            //实例化一个消息对象
            MessageFactory messageFactory = MessageFactory.newInstance();
            //实例化一个消息
            SOAPMessage message = messageFactory.createMessage();
            //获取消息中soap消息部分的句柄
            SOAPPart soapPart = message.getSOAPPart();
            //获取soap消息部分中的信封句柄
            SOAPEnvelope envelope = soapPart.getEnvelope();
            envelope.setPrefix("soapenv");
            envelope.removeNamespaceDeclaration("SOAP-ENV");
//            envelope.setAttribute("xmlns:xsd", XSD_NS);
            envelope.setAttribute("xmlns:xsi", XSI_NS);
            envelope.setAttribute("xmlns:soa", AUTH_NS);
            //获取信封中需要填写的请求报文部分的句柄
            //创建soap工厂
            SOAPFactory soapFactory = SOAPFactory.newInstance();
            //添加消息体以及json字符串
            SOAPBody body = envelope.getBody();
            body.setPrefix("soapenv");
            SOAPBodyElement bodyElement = body.addBodyElement(envelope.createName("execute", "soa", null));
            SOAPElement requestData = bodyElement.addChildElement("requestData","soa");
            requestData.addTextNode(judgeNull(bodyJsonStr));
            //添加信息头内容
            SOAPHeader header = envelope.getHeader();
            header.setPrefix("soapenv");
            SOAPElement wsHeaderElm = soapFactory.createElement("HEADER", AUTH_PREFIX, AUTH_NS);
            SOAPElement svcnameElm = soapFactory.createElement("SVCNAME");
            SOAPElement svccodeNameElm = soapFactory.createElement("SVCCODE");
            SOAPElement svcverElm = soapFactory.createElement("SVCVER");
            SOAPElement orisysElm = soapFactory.createElement("ORISYS");
            SOAPElement trantimeElm = soapFactory.createElement("TRANTIME");
            SOAPElement trannoElm = soapFactory.createElement("TRANNO");
            SOAPElement authElm = soapFactory.createElement("AUTH");
            SOAPElement securityElm = soapFactory.createElement("SECURITY");
            SOAPElement routeElm = soapFactory.createElement("ROUTE");
            SOAPElement bran

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值