本DEMO的
URLEndpoint引入了AXIS2的axis-jaxrpc-1.4.jar, 但未成功,需要反思。
package com.hikvision.cms.webservcie.client.util; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.UnsupportedEncodingException; import javax.xml.messaging.URLEndpoint; import javax.xml.soap.MessageFactory; import javax.xml.soap.soAPConnection; import javax.xml.soap.soAPConnectionFactory; import javax.xml.soap.soAPConstants; import javax.xml.soap.soAPException; import javax.xml.soap.soAPMessage; import org.apache.log4j.Logger; /** * SOAP底层方式实现与Web Service通讯。 * * @author Alex Woo * */ public class DynamicSoapCall { private static final Logger log = Logger.getLogger(DynamicSoapCall.class); private String wsdlURI = null; public DynamicSoapCall(String wsdlURI) throws Exception { log.info("Reading WSDL document from '" + wsdlURI + "'"); this.wsdlURI = wsdlURI; } public SOAPMessage soapCall(String xmlString,String charsetName,String soapVersion) throws Exception { if (null == xmlString) xmlString = ""; byte[] bytes = null; if (null == charsetName || charsetName.trim().equals("")) { bytes = xmlString.getBytes(); } else { try { bytes = xmlString.getBytes(charsetName); } catch (UnsupportedEncodingException e) { log.warn("不支持指定的字符集,将按照操作系统默认字符集转换。可能会导致发送数据(特别是中文字符等数据)乱码。"); bytes = xmlString.getBytes(); } } InputStream is = new ByteArrayInputStream(bytes); return soapCall(is,soapVersion); } public SOAPMessage soapCall(InputStream is,String soapVersion) throws Exception { MessageFactory mf = null; if (null != soapVersion && soapVersion.trim().equals("1.2")) { mf = MessageFactory.newInstance(SOAPConstants.soAP_1_2_PROTOCOL); } else {// SOAP 1.1 is default. mf = MessageFactory.newInstance(); } SOAPMessage message = null; try { message = mf.createMessage(null,is); } catch (SOAPException e) { throw new Exception("根据Request XML数据创建的SOAP Message消息无效。错误原因:" + e.getCause()); } SOAPConnectionFactory soapFactory = SOAPConnectionFactory.newInstance(); SOAPConnection con = soapFactory.createConnection(); URLEndpoint endpoint = new URLEndpoint(wsdlURI); SOAPMessage response = con.call(message,endpoint); return response; } private static String myWsdl = "http://www.wll.com/ws/test?wsdl"; public static void main(String[] args) throws Exception { File xml = new File("D:/getTokenInfo.xml"); DynamicSoapCall call = new DynamicSoapCall(myWsdl); SOAPMessage result = call.soapCall(new FileInputStream(xml),null); System.out.println(result.getSOAPHeader()); System.out.println(result.getSOAPBody()); } public static void main1(String[] args) throws Exception { String xmlString = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.ws.filemgr.hikvision.com/\">" + "<soapenv:Header/>" + "<soapenv:Body>" + "<web:getTokenInfo>" + "<username>administrator</username>" + "<password>123456</password>" + "</web:getTokenInfo>" + "</soapenv:Body>" + "</soapenv:Envelope>"; DynamicSoapCall call = new DynamicSoapCall(myWsdl); SOAPMessage result = call.soapCall(xmlString,"utf-8",null); System.out.println(result.getSOAPHeader()); System.out.println(result.getSOAPBody()); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。