首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

VC 2010 应用GSOAP调用C#写的WEBSERVICE

2012-11-26 
VC 2010 使用GSOAP调用C#写的WEBSERVICE一、环境:1、VS2010 sp12、GSOAP 2.8.11 ,http://sourceforge.net/pro

VC 2010 使用GSOAP调用C#写的WEBSERVICE


一、环境:

1、VS2010 sp1

2、GSOAP 2.8.11 ,http://sourceforge.net/projects/gsoap2/

3、WIN8 IIS


二、实现

用C#写个WEB SERVICE发布到本机,应用程序名为SRV

wsdl为http://localhost/srv/srv.asmx?wsdl


gsoap主要的应用程序分为两个:wsdl2h和soapcpp2。

wsdl2h是将wsdl定义转换成.h文件的工具。主要有一些选项:

-c代表转化成C代码。

-s代表不使用STL,取而代之需要在工程中包含stdsoap2.h和stdsoap2.cpp。这些在安装的源码中都可以找到。

-o file代表指定输出文件名称。

通常情况下使用命令wsdl2h –s xxx.wsdl即可生成想要的.h文件。


在这里我使用的命令是:

VC 2010 应用GSOAP调用C#写的WEBSERVICE

意思是使用定义模板typemap.dat,并且不使用STL生成testClient.h

typemap.dat是GSOAP自带的复制过来增加了以下内容

xsd__string = | wchar_t* 

因为默认GSOAP生成的C++代码都是ANSI的,而C#默认是用UTF的,所以最好转换成wchar_t这样兼容性好些,避免中文乱码。


然后是要生成WEBSERVICE调用代码

没有特殊选项的情况下,gsoap不需要依赖其他的链接库。soapcpp2的主要选项有:

-S代表生成客户端代码。

-C代表生成服务端代码。

-L代表不生成soapClientLib/soapServerLib

-c代表仅生成c代码

-i代表使用Proxy

-x 不生成xml文件


我使用的是命令是:

VC 2010 应用GSOAP调用C#写的WEBSERVICE


OK,现在可以把调用代码COPY到VC2010项目里测试效果了。

总共需要把这么多文件COPY过去

VC 2010 应用GSOAP调用C#写的WEBSERVICE

因为我们没有使用STL,所以需要包含stdsoap2.h和stdsoap2.cpp,这两个文件在GSOAP里可以找到。


设置以上新加的所有.cpp文件不要使用预编译头

VC 2010 应用GSOAP调用C#写的WEBSERVICE


最后调用代码

要先

   const char* server="http://localhost/srv/srv.asmx";SrvSoapProxy ss(server,SOAP_C_UTFSTRING); _tempuri__HelloWorld hw; _tempuri__HelloWorldResponse hwp; if(ss.HelloWorld(&hw,&hwp)==SOAP_OK){AfxMessageBox(hwp.HelloWorldResult);}elseAfxMessageBox(L"error");


热点排行