soap toolkit是一款功能非常强大用来创建web服务的工具。东坡为您带来的是soap toolkit官方最新版,它的最大的特色在于,即使你不会专业的SOAP或XML的复杂知识,也可以创建web服务。有需要的朋友,赶快下载体验吧!
soap toolkit是什么
SOAP介绍
SOAP(简单对象访问协议)是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
SOAP相关定义
基于类对象的传输协议。
SOAP封装(envelop),它定义了一个框架,描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们;
SOAP编码规则(encoding rules),它定义了一种序列化机制,用于表示应用程序需要使用的数据类型的实例;
SOAP RPC表示(RPC representation),它定了一个协定,用于表示远程过程调用和应答;
SOAP绑定(binding),它定义了SOAP使用哪种协议交换信息。使用HTTP/TCP/UDP协议都可以。
把SOAP绑定到HTTP提供了同时利用SOAP的样式和分散的灵活性的特点以及HTTP的丰富的特征库的优点。在HTTP上传送SOAP并不是说SOAP会覆盖现有的HTTP语义,而是HTTP上的SOAP语义会自然的映射到HTTP语义。在使用HTTP作为协议绑定的场合中,RPC请求映射到HTTP请求上,而RPC应答映射到HTTP应答。然而,在RPC上使用SOAP并不仅限于HTTP协议绑定。
用SOAP方式调用webservice
由于另外系统用的是Microsoft SOAP Toolkit 工具发布的webservice。对应的调用方式也只能采用SOAP方式。
1. 下载jar包。
2. 代码示例。
import java.net.URL;
import java.util.Vector;
import nc.bs.logging.Logger;
import nc.vo.levmpub.card.WebServiceConst;
import nc.vo.levmpub.card.WebServiceParamVO;
import nc.vo.pub.BusinessException;
import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.encoding.SOAPMappingRegistry;
import org.apache.soap.encoding.soapenc.StringDeserializer;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;
import org.apache.soap.transport.http.SOAPHTTPConnection;
import org.apache.soap.util.xml.QName;
/**
*
* <b> 访问散装控制系统WebService(采用SOAP方式) </b>
* <p>
* 详细描述功能
* </p>
* @since
* 创建日期:2013-11-26
* @author
*/
public class WebServiceWrapper {
public String callWebServiceMethod(WebServiceParamVO paramVO)
throws BusinessException {
String returnValue = null;
try {
returnValue = callMethod(paramVO);
} catch (Exception e) {
throw new BusinessException("调用散装控制系统接口出现错误: " + e.getMessage());
}
return returnValue;
}
/**
* 由于散装控制系统的wsdl是用Microsoft SOAP Toolkit自动生成的,只能通过soap方式访问接口
*
* @param paramVO
* @throws Exception
*/
private String callMethod(WebServiceParamVO paramVO) throws Exception {
SOAPMappingRegistry smr = new SOAPMappingRegistry();
StringDeserializer sd = new StringDeserializer();
smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("", "Result"), null,
null, sd);
// 创建传输路径和参数
SOAPHTTPConnection st = new SOAPHTTPConnection();
// 创建调用
Call call = new Call();
call.setSOAPTransport(st);
call.setSOAPMappingRegistry(smr);
call.setTargetObjectURI(paramVO.getTargetObjectURI());
call.setMethodName(paramVO.getMethodName());
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
Vector<Parameter> params = getParameter(paramVO);
call.setParams(params);
URL url = new URL(paramVO.getWsdlUrl());
Response resp = call.invoke(url, paramVO.getSoapAction());
if (resp == null) {
return null;
}
if (resp.generatedFault()) {
Fault fault = resp.getFault();
Logger.error(fault.toString());
throw new BusinessException(fault.getFaultString());
}
Parameter ret = resp.getReturnValue();
Object value = ret.getValue();
return (String)value;
}
private Vector<Parameter> getParameter(WebServiceParamVO paramVO) {
Vector<Parameter> params = new Vector<Parameter>();
params.addElement(new Parameter(WebServiceConst.CUSERNAME,
String.class, paramVO.getUserName(), null));
params.addElement(new Parameter(WebServiceConst.CPASSWORD,
String.class, paramVO.getPassword(), null));
params.addElement(new Parameter(WebServiceConst.NTYPE, Integer.class,
paramVO.getNtype(), null));
params.addElement(new Parameter(WebServiceConst.CCARNO, String.class,
paramVO.getCarno(), null));
params.addElement(new Parameter(WebServiceConst.CCKBM, String.class,
paramVO.getStorcode(), null));
params.addElement(new Parameter(WebServiceConst.CCHBM, String.class,
paramVO.getInvcode(), null));
return params;
}
}
- PC官方版
- 安卓官方手机版
- IOS官方手机版