今天看了下外包软件公司的开发的接口说明,有数据库和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