微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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。然后提供了以系列的内置处理方法来解读这个复合数据类型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐