最近遇到一个用.net调用java写的webservice的应用,对方程序员提供了一个后缀为wsdl的文件,这个跟.Net里面生成的wsdl文件差不多,起初没什么概念就查了点资料,知道可以将这个wsdl文件编译动态库直接调用,也就是生成一个代理了,这个跟以往经常将.net的webservice描述地址进行编译似乎差不多,于是就尝试这写,还基本能实现。
基本格式如下
wsdl.exe /l:cs /n:NHWS /out:C:/NHWS.cs C:/Isws.wsdl
在vs命令行中运行就可以实现了
再则通过沟通我也索要了该wsdl文件的描述地址,类似与.net的描述地址,只不过java的文件后缀是.jws而.net的是.asmx
如下对照
[NET] http://110.11.4.5/WebSite1/Service.asmx?wsdl
[Java]http://***.***.**.**/WebSite1/Service?wsdl或http://***.***.**.**/WebSite1/Service.jws?wsdl
不过这里只是我遇到的情况 对java不是很了解 以上java提供的webservice地址应该只是其技术类中的一个吧 对java不了解
用.Net调用java的这个地址也可以,方式也很多,基本跟调用.net的地址一样
(1)在项目中添加webservice引用,通过向导即能完成
(2)为方便使用期间使用如下的两个命令来将java的webservice描述地址最终编译成一个动态库使用
A》生成类文件
wsdl.exe /l:cs /n:NWS /out:C:/NWS.cs http://***.***.**.**/WebSite1/Service?wsdl
B》将类文件编译成动态库
csc /target:library /out:"c:\NWS.dll" c:\NWS.cs
后面的使用就是一样的了
不过这里注意两个问题:
(1)描述地址最后的参数?wsdl有时候不可或缺,最好加上,因为你最终要编译的就是这个wsdl文件
(2)wsdl.exe是微软VS中提供的一个工具,在VS命令好中可以直接调用出来 这里要记住/n:TestWS也即/namespace:TestWS中你自行定义的一个命名空间TestWS ,这个在你后续调用java的webservice提供的方法的时候会使用到