根据web service的定义,和web service进行请求响应要用SOAP(http://www.w3c.org/TR/soap) 对请求响应的数据进行封装,客户端对请求数据用SOAP封装,然后用HTTP协议发送到web service的接收地址,web service实现解析SOAP,调用客户端请求的方法,成功后将返回值用SOAP封装返用HTTP回给发出请求的客户端,客户端解析返回的SOAP包,得到所调用web service方法的返回值。
客户端在封装发送给web service的请求数据和解析web service返回的数据时需要知道调用的方法名,参数个数,参数类型,返回值类型,以及其他封装SOAP所需的信息,这些信息客户端可以从web service的WSDL(http://www.w3c.org/TR/wsdl)获得。
在javascript中,发送和接收SOAP包可以用XMLHTTPRequest对象来实现,关于XMLHTTPRequest可参考http://blog.csdn.net/indexchen/archive/2005/12/04/543209.aspx 。生成和解析SOAP包则可根据WSDL来编写,但这个过程比较烦琐,手工编写效率很低,因此本人开发了一个工具wsdl2js,这个工具可以根据web service的WSDL来生成调用web service中方法的javascript代码。wsdl2js生成的访问web service的javascript代码不需要其他附加库就可嵌入HTML页面中运行。
wsdl2js目前支持WSDL 1.1和SOAP 1.1,支持字符串、整数、浮点型、数组、w3c DOM对象。wsdl2js采用java开发,因此能运行java的平台都能使用。