博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用SOAP方式调用webservice
阅读量:5904 次
发布时间:2019-06-19

本文共 2904 字,大约阅读时间需要 9 分钟。

hot3.png

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.  *  
  25.  * 创建日期:2013-11-26 
  26.  *  
  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.      *  paramVO 
  46.      *  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. 参考

 

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

你可能感兴趣的文章
ffmpeg截取视频片段
查看>>
Oracle:数据类型对应表
查看>>
使用Charles抓包获取API
查看>>
Fiddler抓包之IOS
查看>>
【09-23】js原型继承学习笔记
查看>>
洛谷P1349 广义斐波那契数列
查看>>
HDU 1166 敌兵布阵
查看>>
本地文件夹选择框
查看>>
BZOJ3676 [Apio2014]回文串
查看>>
BZOJ3160 万径人踪灭
查看>>
【Codevs 2115】数集分割
查看>>
横竖屏切换时Activity的生命周期
查看>>
Python自动化开发学习的第十周----RabbitMQ
查看>>
Okhttp3请求网络开启Gzip压缩
查看>>
BZOJ 1565 植物大战僵尸(最大权闭合图)
查看>>
pycharm配置mysql数据库连接访问
查看>>
字符串全排列-非递归算法
查看>>
Spring源码学习:第0步--环境准备
查看>>
调用函数和存储过程批量插入数据
查看>>
appium===报错adb server version (31) doesn’t match this client (39); killing…的解决办法
查看>>