一、 环境准备
在本文中,所有程序均在Linux下开发完成,经测试能够正常运行。
在开发过程中,我们需要用到gSOAP,可以从以下网址下载获得:[url]http://www.cs.fsu.edu/~engelen/soap.html[/url]
我下载的是gsoap_2.7.12.tar.gz
下载下来解压缩,按正常安装过程进行编译、安装。
# tar zxvf gsozp_2.7.12.tar.gz
# cd gsoap_2.7.12
# ./configure –-prefix=/usr/local/gSOAP(指定安装路径)
# make
# make install
二、 生成相关文件
1、通过WSDL文档,生成C/C++头文件
# /usr/local/gSOAP/bin/wsdl2h –c –o TestHeader.h [url]http://192.168.0.151:8080/services/TestWS?wsdl[/url]
2、拷贝gSOAP源代码中import文件夹下的stlvector.h文件到TestHeader.h同一目录,如果在解析WSDL文档时使用了-s参数,即不使用STL,则不需要拷贝这一文件。
3、解析TestHeader.h文件,生成存根程序
# /usr/local/gSOAP/bin/soapcpp2 –c –C TestHeader.h
命令中参数-c代表生成标准C程序,若没有这个参数,则生成C++程序。
命令中参数-C代表仅生成客户端程序,若没有这个参数,则默认生成客户端和服务端程序。
三、 进行相关开发
1、新建工程
新建一个C的工程,并将刚刚生成的文件拷贝到工程中,设置工程属性,包含gSOAP源代码目录,链接属性处,需要包含文件libgsoap.a(使用C语言开发)或者libgsoap++.a(使用C++开发)。
2、代码开发
WebService的具体调用方式可以参见生成的soapStub.h文件。
Demo代码(调用WebService的addUser):
#include “soapH.h”
#include “TestHeaderHttpBinding.nsmap”

int main()
{
        struct soap clientSOAP;
        struct _ns1__addUser addUserMsg;
        struct _ns1__addUserResponse addUserResponse;

soap_init(&clientSOAP);

addUserMsg.in0 = “test”;
        addUserMsg.in1 = “test”;
        addUserMsg.in2 = “test”;

if(soap_call___ns1__addUser(&clientSOAP, NULL, NULL, &addUserMsg, &addUserResponse) == SOAP_OK)
        {
                printf(“%s\n”, *addUserResponse.out);
        }
        else
        {
                printf(“Error\n”);
        }
        
        soap_destroy(&clientSOAP);
        soap_end(&clientSOAP);
        soap_done(&clientSOAP);

return 0;
}

正常的话,编译运行后能够在控制台看到WebService返回的处理结果。
在这段代码中,_ns1__addUser、_ns1__addUserResponse、soap_call___ns1__addUser都是在soapStub.h中获得,具体应用可能会根据不同的服务端生成不同的代码。

本文出自 “玄武·巴依” 博客,请务必保留此出处http://commandos.blog.51cto.com/154976/130652

标准C/C++程序通过gSOAP调用WebService相关推荐

  1. C++利用gSoap调用WebService服务

    最近要利用C++调用WebService接口,中间工具是gSoap,IDE:VS2010,WebService接口:http://webservice.webxml.com.cn/WebService ...

  2. gsoap 调用 java_Qt5 + gSOAP 调用 Webservice

    开发环境 Win10+Qt5.7+gSOAP2.8.43 使用步骤 1.下载gSOAP 下载地址:https://sourceforge.net/projects/gsoap2/files/ 2.生成 ...

  3. java中web错误返回码,关于在java程序里调用webservice报500返回码的有关问题

    关于在java程序里调用webservice报500返回码的问题 我现在写了个程序,是调用webservice的,执行后我打印返回码是500  错误信息是 java.io.IOException: S ...

  4. EJBCA 6 通过调用WebService接口增加用户并获取证书

    2019独角兽企业重金招聘Python工程师标准>>> 今天终于搞定通过调用WebService 接口的方式在EJBCA 中增加用户. 本项目完整代码请参见http://git.os ...

  5. gSoap客户端调用WebService完成后注意内存释放顺序

    gSoap客户端调用WebService完成后注意内存释放顺序 [cpp] view plaincopy //Soap资源清理 soap_destroy(soap_sp.get());  //清理反序 ...

  6. java axis2 开发webservice_利用Axis2开发WebService(3)—用Java实现调用WebService的客户端程序 | 学步园...

    WebService是为程序服务的,只在浏览器中访问WebService是没有意义的.因此,在本节使用Java实现了一个控制台程序来调用上一节发布的WebService.调用WebService的客户 ...

  7. java xfire指定参数名_Java编程中使用XFire框架调用WebService程序接口

    JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊. ...

  8. C# 创建、部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。 概念性的东西就不说太多,下面开始创建一个简单的webservi

    C# 创建.部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互. 概念性的东西就不说太多,下面开始创建一个简单的webservice ...

  9. C#调用WebService

    1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...

最新文章

  1. Spring Boot 太重,Vert.x 真香!
  2. JQuery图表插件之Flot
  3. asp.net mvc post 后台model_搭建restful api后台
  4. Faied to run MSBuild commond CmakeError
  5. 按钮 java_按钮大小(Java)
  6. 反向传播算法(BP)学习笔记
  7. SpringBoot | 第十章:Swagger2的集成和使用
  8. 使用JS读取本地文件
  9. 芒果DB:mongodb
  10. TCP 协议(包含三次握手,四次挥手)
  11. 【T3】将“恢复记账前状态”按钮放置到工作台,一直显示。
  12. linux mysql 备份 压缩_Linux下mysql定时备份压缩
  13. 麒麟信安加入中国首个桌面操作系统根社区openKylin, 共擎开源未来!
  14. PostgreSQL数据库WAL——RM_HEAP_ID日志记录动作
  15. iterator的用法
  16. 3D建模学习对于电脑配置要求高不高?用台式机好还是笔记本电脑好?显卡内存等全方面解析,小白福音
  17. Access key id should not be null or empty.
  18. 电子科技大学格拉斯哥学院基础实践——共享单车的调查
  19. Android之View提升:四 使用ExpandableListView 折叠显示
  20. Java使用@Value获取不到值

热门文章

  1. 移动端手机火狐浏览器全屏插件
  2. 序列代码UVa 111 History Grading (最长公共子序列)
  3. 泛型那点儿事儿 泛型概述 简单样例代码
  4. Nginx配合uGIGI和Django用作应用程序网关
  5. 十分钟教会你原生JS压缩图片,极其精简版
  6. Docker Centos安装 Openssh
  7. VirtualBox linux 网络设置 Bridged Adapter模式
  8. for循环insert怎么效率高_循环结构就这么简单,你还不会吗?
  9. npm切换淘宝源,yarn切换淘宝源
  10. 受检异常和非受检异常