soap toolkit是一款功能非常強大用來創(chuàng)建web服務(wù)的工具。東坡為您帶來的是soap toolkit官方最新版,它的最大的特色在于,即使你不會專業(yè)的SOAP或XML的復(fù)雜知識,也可以創(chuàng)建web服務(wù)。有需要的朋友,趕快下載體驗吧!
soap toolkit是什么
SOAP介紹
SOAP(簡單對象訪問協(xié)議)是交換數(shù)據(jù)的一種協(xié)議規(guī)范,是一種輕量的、簡單的、基于XML(標準通用標記語言下的一個子集)的協(xié)議,它被設(shè)計成在WEB上交換結(jié)構(gòu)化的和固化的信息。
SOAP相關(guān)定義
基于類對象的傳輸協(xié)議。
SOAP封裝(envelop),它定義了一個框架,描述消息中的內(nèi)容是什么,是誰發(fā)送的,誰應(yīng)當(dāng)接受并處理它以及如何處理它們;
SOAP編碼規(guī)則(encoding rules),它定義了一種序列化機制,用于表示應(yīng)用程序需要使用的數(shù)據(jù)類型的實例;
SOAP RPC表示(RPC representation),它定了一個協(xié)定,用于表示遠程過程調(diào)用和應(yīng)答;
SOAP綁定(binding),它定義了SOAP使用哪種協(xié)議交換信息。使用HTTP/TCP/UDP協(xié)議都可以。
把SOAP綁定到HTTP提供了同時利用SOAP的樣式和分散的靈活性的特點以及HTTP的豐富的特征庫的優(yōu)點。在HTTP上傳送SOAP并不是說SOAP會覆蓋現(xiàn)有的HTTP語義,而是HTTP上的SOAP語義會自然的映射到HTTP語義。在使用HTTP作為協(xié)議綁定的場合中,RPC請求映射到HTTP請求上,而RPC應(yīng)答映射到HTTP應(yīng)答。然而,在RPC上使用SOAP并不僅限于HTTP協(xié)議綁定。
用SOAP方式調(diào)用webservice
由于另外系統(tǒng)用的是Microsoft SOAP Toolkit 工具發(fā)布的webservice。對應(yīng)的調(diào)用方式也只能采用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> 訪問散裝控制系統(tǒng)WebService(采用SOAP方式) </b>
* <p>
* 詳細描述功能
* </p>
* @since
* 創(chuàng)建日期: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("調(diào)用散裝控制系統(tǒng)接口出現(xiàn)錯誤: " + e.getMessage());
}
return returnValue;
}
/**
* 由于散裝控制系統(tǒng)的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);
// 創(chuàng)建傳輸路徑和參數(shù)
SOAPHTTPConnection st = new SOAPHTTPConnection();
// 創(chuàng)建調(diào)用
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官方手機版