WSDL 指网络服务描述语言 (Web Services Description Language)。WSDL 是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。
对WSDL语言的详细解说可参考
这里借用一下一张能一目了然的结构图:
下面将详述如何从wsdl文件生成c代码
以salesforce(http://www.salesforce.com)为例,该web service提供了多个版本的wsdl文件,定义了此服务提供的操作,作为客户程序,需要根据自己的需要,用特定的编程语言、方式去访问这些服务,例如通过c语言和axis2方式(axis2/c api)。
以partner.wsdl为例,这就需要将提供的wsdl文件转为C代码并且在Axis2框架下工作。Axis2/c提供了一个wsdl2c tool,可以实现这个转变。
Wsdl2c tool实际上是几行脚本,真正奏效的是\axis2java\lib下的众多jar文件,从命名可以看出,axis2java实际上是java版本的axis2c。所以在代码生成之前必须确保java运行环境以及axis2java的安装完整。
将wsdl2c.bat脚本中代码修改如下,用于生成client端的代码(参照http://axis.apache.org/axis2/c/core/docs/axis2c_manual.html,可生成server端的代码)
2
3 setlocal EnableDelayedExpansion
4
5 set AXIS2_CLASSPATH=C:\axis2java
6
7 FOR %%c in ("%AXIS2_HOME%\lib\*.jar") DO set AXIS2_CLASSPATH=!AXIS2_CLASSPATH!;%%c;
8
9 java -classpath %AXIS2_CLASSPATH% org.apache.axis2.wsdl.WSDL2C -uri test.wsdl -d adb -u
将以上脚本另存为ba_client.bat,其中C:\axis2java 即为axis2java解压后的路径;test.wsdl即为salesforce上直接获取的wsdl文件,例如partner.wsdl。
运行ba_client.bat即可生成client端的C代码。客户可以进一步使用这些代码访问salesforce服务。