c++访问webservice(gsoap简单使用)

C#建立webservice中并添加add实现加法。测试并记录url。

 

接下来我们用c++来调用webservice。完成链接需要soap协议,这里我们用到gsoap库。

下载完成后,需要用到import文件夹,wsdl2h.exe,soapcpp2.exe。

wsdl2h.exe用来完成wsdl转换.h文件。

soapcpp2.exe用来生成框架文件及接口。

下面测试已经记录该webservice的url:http://localhost:39014/Service1.asmx

首先生成.h文件这里我们使用TDSoap做为我们这次的文件名。通过命令行进入gsoap所在文件夹,执行:

wsdl2h -s -t TDSoap.dat -o TDSoap.h http://localhost:39014/Service1.asmx?wsdl

成功生成TDSoap.h,接下来执行:

soapcpp2 -C -I E:\project\gsoap\importTDSoap.h -L -i –x

这里的E:\project\gsoap\import是我的计算机上的import文件夹地址,根据情况设置。

执行后生成很多新文件。


新建c++控制台应用程序TestGSoap,把上面新生成的文件及stdsoap2.h、stdsoap2.cpp拷贝到新建c++程序中。把soapC.cpp、soapService1SoapProxy.cpp、stdsoap2.cpp导入到工程源文件文件夹(防止链接错误),前期准备工作已完成。

添加#include "soapService1SoapProxy.h"#include "Service1Soap.nsmap"

最后实现add,完成main中add的调用。

int add(int a,int b)

{

    Service1SoapProxy proxy("http://localhost:39014/Service1.asmx",SOAP_C_UTFSTRING);

    //Service1SoapProxyproxy;

    _ns1__add add;

    add.a = 1;

    add.b = 2;

    _ns1__addResponse addr;

    if(proxy.add(&add,addr) == SOAP_OK)

    {

        returnaddr.addResult;

    }

    else

        return-1;

}

int _tmain(int argc,_TCHAR* argv[])

{

   

    cout<<add(1,2)<<endl;

    return 0;

}

查看结果


注意:测试时注意url是否匹配

 

gsoap不仅可以做客户端也可以做服务端,这块资料很多不再作讲解。

 

源码下载:http://download.csdn.net/detail/u011736517/9766030

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章