利用SOAP方式调用webservice

1. 代码示例。

Java代码 

  1. import java.net.URL;  
  2. import java.util.Vector;  
  3.   
  4. import nc.bs.logging.Logger;  
  5. import nc.vo.levmpub.card.WebServiceConst;  
  6. import nc.vo.levmpub.card.WebServiceParamVO;  
  7. import nc.vo.pub.BusinessException;  
  8.   
  9. import org.apache.soap.Constants;  
  10. import org.apache.soap.Fault;  
  11. import org.apache.soap.encoding.SOAPMappingRegistry;  
  12. import org.apache.soap.encoding.soapenc.StringDeserializer;  
  13. import org.apache.soap.rpc.Call;  
  14. import org.apache.soap.rpc.Parameter;  
  15. import org.apache.soap.rpc.Response;  
  16. import org.apache.soap.transport.http.SOAPHTTPConnection;  
  17. import org.apache.soap.util.xml.QName;  
  18. /** 
  19.  *  
  20.  * <b> 访问散装控制系统WebService(采用SOAP方式) </b> 
  21.  * <p> 
  22.  *     详细描述功能 
  23.  * </p> 
  24.  * @since 
  25.  * 创建日期:2013-11-26 
  26.  * @author 
  27.  */  
  28. public class WebServiceWrapper {  
  29.   
  30.   
  31.     public String callWebServiceMethod(WebServiceParamVO paramVO)  
  32.             throws BusinessException {  
  33.         String returnValue = null;  
  34.         try {  
  35.             returnValue = callMethod(paramVO);  
  36.         } catch (Exception e) {  
  37.             throw new BusinessException("调用散装控制系统接口出现错误: " + e.getMessage());  
  38.         }  
  39.         return returnValue;  
  40.     }  
  41.       
  42.     /** 
  43.      * 由于散装控制系统的wsdl是用Microsoft SOAP Toolkit自动生成的,只能通过soap方式访问接口 
  44.      *  
  45.      * @param paramVO 
  46.      * @throws Exception 
  47.      */  
  48.     private String callMethod(WebServiceParamVO paramVO) throws Exception {  
  49.         SOAPMappingRegistry smr = new SOAPMappingRegistry();  
  50.         StringDeserializer sd = new StringDeserializer();  
  51.         smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("", "Result"), null,  
  52.                 null, sd);  
  53.   
  54.         // 创建传输路径和参数  
  55.         SOAPHTTPConnection st = new SOAPHTTPConnection();  
  56.   
  57.         // 创建调用  
  58.         Call call = new Call();  
  59.         call.setSOAPTransport(st);  
  60.         call.setSOAPMappingRegistry(smr);  
  61.   
  62.         call.setTargetObjectURI(paramVO.getTargetObjectURI());  
  63.         call.setMethodName(paramVO.getMethodName());  
  64.         call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);  
  65.   
  66.         Vector<Parameter> params = getParameter(paramVO);  
  67.         call.setParams(params);  
  68.   
  69.         URL url = new URL(paramVO.getWsdlUrl());  
  70.         Response resp = call.invoke(url, paramVO.getSoapAction());  
  71.   
  72.         if (resp == null) {  
  73.             return null;  
  74.         }  
  75.         if (resp.generatedFault()) {  
  76.             Fault fault = resp.getFault();  
  77.             Logger.error(fault.toString());  
  78.             throw new BusinessException(fault.getFaultString());  
  79.         }  
  80.           
  81.         Parameter ret = resp.getReturnValue();  
  82.         Object value = ret.getValue();  
  83.           
  84.         return (String)value;  
  85.     }  
  86.   
  87.     private Vector<Parameter> getParameter(WebServiceParamVO paramVO) {  
  88.         Vector<Parameter> params = new Vector<Parameter>();  
  89.         params.addElement(new Parameter(WebServiceConst.CUSERNAME,  
  90.                 String.class, paramVO.getUserName(), null));  
  91.         params.addElement(new Parameter(WebServiceConst.CPASSWORD,  
  92.                 String.class, paramVO.getPassword(), null));  
  93.         params.addElement(new Parameter(WebServiceConst.NTYPE, Integer.class,  
  94.                 paramVO.getNtype(), null));  
  95.         params.addElement(new Parameter(WebServiceConst.CCARNO, String.class,  
  96.                 paramVO.getCarno(), null));  
  97.         params.addElement(new Parameter(WebServiceConst.CCKBM, String.class,  
  98.                 paramVO.getStorcode(), null));  
  99.         params.addElement(new Parameter(WebServiceConst.CCHBM, String.class,  
  100.                 paramVO.getInvcode(), null));  
  101.   
  102.         return params;  
  103.     }  
  104. }  

 

说明:



 

3. 参考

java调用webservice接口方法

 

转载于:https://my.oschina.net/rightemperor/blog/789697

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值