一.发送自定义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