VS2010、gSOAP创建WebService
gsoap的简介就不啰嗦了,说说vc下使用gsoap的方法和注意事项吧。
一、下载gsoap,连接是https://sourceforge.net/projects/gsoap2/files/,点击页面中的download下载最新的gsoap包。
二、编写.h文件
//gsoap ns service name: itoa
//gsoap ns service protocol: SOAP
//gsoap ns service style: document
//gsoap ns service namespace: http://192.168.1.80:8087/itoa?wsdl
//gsoap ns service location: http://192.168.1.80:8087
//gsoap ns service encoding: literal
//gsoap ns schema namespace: urn:itoa
int ns__itoa(int i, char **a);
int ns__add(double a, double b, double& result);
int ns__sub(double a, double b, double& result);
注意事项:
1.//gsoap ns service encoding: literal 这里用的literal编码,因为在Java用cxf框架客户端调用时会不支持,axis框架是没问题的
2.//gsoap ns service namespace: http://192.168.1.80:8087/itoa?wsdl
//gsoap ns service location: http://192.168.1.80:8087
这里都用的主机IP。之前参考别的demo,都是localhost,到发布时,局域网客户端无法调用,连接被阻止。
三、生成服务端代码
1.将.h文件放到gsoap包中的,gsoap_2.8.44\gsoap-2.8\gsoap\bin\win32目录下。打开cmd,cd到.h所在目录下,执行soapcpp2.exe -S itoa.h,-S生成服务端代码
2.新建itoaServer工程,在新建工程中不要选择预编译头文件
3.将生成的代码拷贝到工程目录下,另外,将gsoap_2.8.44\gsoap-2.8\gsoap目录下的stdsoap2.cpp和stdsoap2.h文件也拷到工程目录下。
4.在工程中添加itoa.nsmap、soapStub.h、stdsoap2.h、stdsoap2.cpp、soapC.cpp、soapServer.cpp这几个文件,不要多,也不要少。否则会编译出错。
四、重新编译生成服务
五、将itoa.wsdl文件拷贝到输出目录
六、启动webservice服务。打开cmd,cd到输出目录,执行itoaServer.exe 8087