加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

gsoap的使用(调用webservice)

发布时间:2020-12-17 00:31:17 所属栏目:安全 来源:网络整理
导读:这些天一直在折腾openssl和sqlite,都忘记了还有gsoap这个也是花了很多时间和精力才弄明白的东东。刚好下午开完例会不想干活了。于是先就写个中文版的gsoap的教程贴出来共享下。 ?????? 先抄一段介绍性的话:gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用

这些天一直在折腾openssl和sqlite,都忘记了还有gsoap这个也是花了很多时间和精力才弄明白的东东。刚好下午开完例会不想干活了。于是先就写个中文版的gsoap的教程贴出来共享下。

?????? 先抄一段介绍性的话:gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。由于 gSOAP具 有相当不错的兼容性,通过gSOAP,我们就可以调用由Java,.Net,Delhpi,PHP等语言开发的SOAP服务,或者向它们提供SOAP服务。

?????? gsoap主页:http://www.voidcn.com/tag/http://sourceforge.net/projects/gsoap2

?????? 下载解压后,可以在gsoapbinwin32里 找到wsdl2h.exe和soapcpp2.exe(另外还有linux和mac版本)。

  • wsdl2h.exe的作用是根据WSDL生成C/C++风格的头 文件
  • soapcpp2.exe的作用是根据头文件自动生成调用远程 SOAP服务的客户端代码(称为存根:Stub)和提供SOAP服务的框架代码(称为框架:Skeleton),另外它也能从头文件生成WSDL文件

    ???????? 了解了这些之后,接下来该如何上手?

    ????????? 当然是新建一个web service啦。在VS2005里面新建一个ASP.NET Web 服务MyWebService.

    ??????????

    ????????? 这是一个很简单的web method,仅仅用来测试一下而已啦。

    ?????????? 运行这个web service,会出来一个页面

    ???????????

    ????????????? 点击 service description,就可以看到wsdl文件。把地址栏的路径保存下来。比如我的就是http://localhost:2488/Service1.asmx?WSDL

    ????????????? 好了,这会服务器端就有了。再写客户端的代码。在写客户端的代码之前,要利用刚刚的那两个工具和wsdl文件生成一些必要的cpp和头文件。

    ????????????? 首先运行,cmd,然后打开gsoapbinwin32,运行wsdl2h.exe

    ?????????????? 用法:

    wsdl2h -o 头文件名?WSDL文件名或URL?例子:?wsdl2h -o test.h?http://localhost:2488/Service1.asmx?WSDL可以看到win32里面多了一个test.h文件。好啦,今天就到这里啦。嘿嘿嘿。精彩待续,敬请期待DANA的大作哈哈哈哇咔咔飘走~~~~~~~


    ------------------------分割分割分割------------------------------------
    win32里面多了一个头文件test.h之后,在命令行里面运行soapcpp2.exe
    用法:soapcpp2.exe 头文件名
    ????? soapcpp2常用选项
    • -C?仅生成客户端代码
    • -S 仅生成服务器端代码
    • -L?不要产生soapClientLib.c和soapServerLib.c文件
    • -c?产生纯C代码,否则是C++代码(与头文件有关)
    • -I?指定import路径(见上文)
    • -x?不要产生XML示例文件
    • -i?生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。


    例子:soapcpp2.exe -C test.h
    如果报错:Critical error: #import: Cannot open file "stlvector.h" for reading.
    Hint: use option -I<path> (you can define multiple paths separated with ';')
    则要要使用-I选项指定gSOAP的 import文件路径,这个路径是"$gsoapgsoapimport":
    soapcpp2.exe -C test.h -I D:workgsoap_2.7.13gsoap-2.7gsoapimport
    这个时候win32目录下会很多有文件生成。

    将Service1Soap.nsmap,soapC.cpp,soapClient.cpp,soapH.h,soapStub.h,
    以及gSoap工程根目录下的stdsoap2.h,stdsoap2.cpp,总共七个文件添加到客户端project中,再添加代码:
    #include "Service1Soap.nsmap"
    修改soapC.cpp,soapClient.cpp,stdsoap2.cpp的编译条件为不需要预编译头文件,gSoap不需要MFC。
    准备工作到现在就全部做好了。各位就按照自己的需要写客户端程序吧。

    其实就是调用服务器端的web method啦。


    原文:http://hi.baidu.com/ueuvtoiitabgkwd/item/7c61a166f90c7e94c4d24914

    webservice 地址:http://www.webxml.com.cn/webservices/chinastockwebservice.asmx
    另也可以使用MS的SoapToolkit的库调用webservice
    
     

    http接口和webservice接口的区别?

    简单说??
    httpservice通过post和get得到你想要的东西
    webservice就是使用soap协议得到你想要的东西,相比httpservice能处理些更加复杂的数据类型
    http协议传输的都是字符串了,webservice则是包装成了更复杂的对象。
    hessian类似于webservice,但是它采用的是二进制RPC协议(Binary),具有轻量、传输量小、平台无关的特点,特别适合于目前网络带宽比较小的手机网络应用项目。
    以hessan的java实现为例,它可以传输Map、List、以及自定义的各种数据接口;比http的纯字符串也方便的多,省却了解析http返回值的步骤。
  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读