domino 如何调用webservice的方法

如题,有那位知道呀?

今天看了下外包软件公司的开发的接口说明,有数据库和WS两种接口。

我考虑使用WS接口。

客户端可以使用AJax调用Web Service。

现在考虑服务器端domino 调用 Web Service了。当然你可以构造整个 SOAP Request 包去访问,然后自己解析返回的XML,也可用现成的一些工具。

lotus scirpt 调用WS,如果在Windows 平台下,使用MS的soaptookit,然后创建一个ActiveX对象SOAP。

可惜我的在AS400平台下。用不了,只能用Java了,需要引用几个Jar包。下载SoapConnect 的Jar包

然后在代理调用。

另外一个办法:用第三方java包axis,到官方网站下载axis , 把相关的lib目录里jar 包放到notes或domino 目录下的JVM/ext目录。

调用org.apache.axis.client 里面的方法。

工作步骤:

首先使用soapUI 测试WebService 连接,分析WSDL,了解这个WS端的调用的操作方法 ,参数,以及正常返回的XML 结果。

然后是domino服务端JAVA代理程序的编写调试,axis2 是axis的升级,调用更为简单。下载后设置好JAVA_HOME变量为JRE所在的路径。利用WSDL2JAVA生成两个JAVA文件,代码过程需要调用这两个java文件里的方法。

我这边的WS端是要进行NTLM的登录认证。网上搜了资料,再自己摸索调试。成功post 了Request并得到Response。代码片段:

LzServiceStub stub=new LzServiceStub();
LzServiceStub.GetRoadInfoData request =new LzServiceStub.GetRoadInfoData();

HttpTransportProperties.Authenticator httpAuth=new HttpTransportProperties.Authenticator();
httpAuth.setUsername("****");
httpAuth.setPassword("**");
httpAuth.setHost("********");
httpAuth.setDomain("*******);
httpAuth.setPort(8001);
ServiceClient SCilent=stub._getServiceClient();
SCilent.getOptions().setProperty(HTTPConstants.AUTHENTICATE, httpAuth);
stub._setServiceClient(SCilent);
LzServiceStub.GetRoadInfoDataResponse reponse=stub.getRoadInfoData(request);
GetRoadInfoDataResult_type0 result = reponse.getGetRoadInfoDataResult();

结果返回的是一个.net 得DataSet类型。这个是.net 的复合数据类型,经过WS后成为一个XML复合元素。好在Axis2有足够的智能去处理它,它自动生成一个类似******_type0 的类来对应于这个DataSet。然后提供了以系列的内置处理方法来解读这个复合数据类型。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenguangxing/archive/2009/07/22/4371003.aspx
温馨提示:答案为网友推荐,仅供参考
相似回答