如何开发gsoap client
工作需要用C++做一个webservice客户端,开发环境为:vs 2005 学习了一下gSoap。
gSoap下载地址:
http://sourceforge.net/projects/gsoap2/files/
解压:

在编写客户端之前我们必须提供webservice的服务器端:
笔者的webservice服务器使用axis来生成wsdl文件
提供的方法如下:
public class Hello {
public String hello(String name) {
if (name == null)
name = "";
return name + ", welcome to the world of web service!";
}
}
wsdl文件如下图:

服务器端接介绍到这 下面我们开始我们的主题 编写客户端:
1 编写客户端我们需要用到前面介绍的gsoap工具 进入解压好的gsoap\bin\win32 该目录下有我们需要使用soapcpp2.exe和wsdl2h.exe。
wsdl2h.exe 的使用:
用法:
wsdl2h -o 头文件名 WSDL文件名或URL
wsdl2h常用选项
-
-o
文件名,指定输出头文件
-
-n
名空间前缀 代替默认的ns
-
-c
产生纯C代码,否则是C++代码
-
-s
不要使用STL代码
-
-t
文件名,指定type map文件,默认为typemap.dat
-
-e
禁止为enum成员加上名空间前缀
soapcpp2.exe 的使用:
常用选项
-
-C
仅生成客户端代码
- -S 仅生成服务器端代码
-
-L
不要产生soapClientLib.c和soapServerLib.c文件
-
-c
产生纯C代码,否则是C++代码(与头文件有关)
-
-I
指定import路径(见上文)
-
-x
不要产生XML示例文件
-
-i
生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。
2生成客户端存根:
wsdl2h -o
hello.h http://localhost/webservice/Hello.jws?wsdl
从wsdl得到头文件
执行完这步会在当前目录下生成hello.h头文件
soapcpp2 -o
hello.h //根据生成的头文件来生成存根
如果执行完这步会在当前目录下生成:

当然如果在执行该步骤时如果看到soapcpp2提示:”Critical error: #import: Cannot open file "stlvector.h" for reading.
“, 那是因为我们的头文件使用了STL(wsdl2h 没用-s选项
),这时要使用-I
选项指定gSOAP的 import文件路径,这个路径是"$gsoap\gsoap\import
":
soapcpp2 hello.h -I D:\gsoap_2.7.16\gsoap-2.7\gsoap\import
3 建立新项目ws4
将生成的文件复制到你工程目录中:其中stdsoap2.h,stdsoap2.cpp 在
gsoap目录下
stlvector.h 在
gsoap\import目录下
注意事项:
1,stdsoap2.cpp ,soapC.cpp , soapServiceSoapProxy.cpp 不需要预编译。

2. 常见错误示例, error C1010 ,一般是预编译头文件的问题,在主函数中需要选预编译,添加 StdAfx.h
error LNK2001 在网络编程中需要WSOCK32.lib ,添加上即可。

error BK 1506: cannot open file ..... 取消Build browse info file
复制完成如图:

然后将其添加进项目如图:

5编程客户端
新建hello.cpp
#include "soapH.h" // 得到存根程序
#include "HelloSoapBinding.nsmap"
#include<stdlib.h>
#include <iostream>
#include <string>
#include "soapStub.h"
#include "stdsoap2.h"
using namespace std;
int main()
{
struct soap clientSOAP;
string s1 = "fuck";
string s2 = "";
soap_init(&clientSOAP);
if(soap_call_ns1__hello(&clientSOAP, NULL, NULL, s1, s2) == SOAP_OK)
{
cout<<s2<<endl;
}
else
{
printf("Error\n");
}
soap_destroy(&clientSOAP);
soap_end(&clientSOAP);
soap_done(&clientSOAP);
return 0;
}
6 编译运行:


- 大小: 7.2 KB

- 大小: 52.6 KB

- 大小: 5.6 KB

- 大小: 8.8 KB

- 大小: 17 KB

- 大小: 7.6 KB

- 大小: 4.4 KB

- 大小: 16.4 KB

- 大小: 19.1 KB
分享到:
相关推荐
gSOAP是一个基于C/C++的WebService开发库,支持SOAP和XML协议。下面是开发WebService客户端的详细步骤和知识点: 一、准备工作 在开发WebService客户端之前,需要下载gSOAP库,包括源代码和工具,例如wsdl2h和...
本篇将重点介绍如何在Visual Studio 2010环境下搭建一个基本的GSOAP客户端和服务器。 **一、GSOAP简介** GSOAP不仅提供了SOAP消息的编解码功能,还包含了自动代码生成工具,可以自动生成客户端和服务端的接口代码,...
gSOAP是一种开源的工具包,用于构建Web服务和客户端应用程序,它支持SOAP(Simple Object Access Protocol)协议。SOAP是一种基于XML的数据交换协议,用于在Web上进行远程过程调用,常用于实现分布式计算。gSOAP使得...
### gSOAP客户端与服务器开发详解 #### 一、gSOAP平台概述 gSOAP是一个功能强大的C++库,用于Web服务的客户端和服务器开发。它支持跨平台应用,包括Windows、Linux、Mac OS、UNIX等操作系统,并且兼容C/C++语言...
gSOAP生成C++客户端和服务器端代码,这些代码能够处理SOAP(简单对象访问协议)消息,这是一种基于XML的数据交换格式,用于Web服务通信。gSOAP能够解析XML请求,将其转换为C++函数调用,并将C++函数返回值转换回XML...
在Android平台上,JNI(Java Native Interface)是一种技术,允许Java代码和其他语言写的代码进行交互。...正确配置这些部分后,你就可以在Android应用中通过JNI调用gSOAP客户端的.so库来与远程SOAP服务进行通信了。
压缩包中的`soapClient`可能是一个包含gSoap客户端代码的源文件或可执行文件,用于演示如何连接到Java Axis服务并执行简单的操作。通过阅读和运行这个文件,你可以更好地理解和学习gSoap的使用方法。 总的来说,...
gSOAP是一个开源工具包,专门用于C++程序员构建基于SOAP(Simple Object Access Protocol)的Web服务。SOAP是一种XML(eXtensible Markup Language)为基础的协议,用于在分布式环境中交换结构化信息。本篇文章将...
gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户...
在Linux环境下,使用C语言开发一个gSOAP客户端来调用Java Web服务服务器是常见的跨平台交互场景。gSOAP是一个开源的C/C++软件开发工具包,它提供了强大的SOAP(Simple Object Access Protocol)处理能力,使得非Java...
在本文中,我们将深入探讨如何在C++环境下使用gSOAP开发Web服务。Web服务是一种允许不同系统之间进行交互的标准化方式,它基于XML、SOAP、WSDL和UDDI等技术,实现了跨平台的可互操作性。gSOAP是一个强大的工具包,它...
gSOAP则是一个开源工具,用于生成跨平台的C/C++ SOAP(简单对象访问协议)客户端和服务端代码,它支持多种Web服务标准,包括WSDL(Web服务描述语言)和XML Schema。 标题提到的"**gsoap编译的onvif客户端源码**",...
2. **gSOAP客户端证书设置**:gSOAP客户端需要配置信任的服务器证书或者提供客户端证书,以进行双向身份验证。这可以通过修改gSOAP的代码或配置文件来实现。 3. **gSOAP HTTPS连接设置**:在gSOAP客户端代码中,需要...
这对于跨语言开发场景尤其有用,比如在 C++ 应用程序中集成基于 Java 的 Web 服务功能。 #### 二、准备工作 1. **下载 gSoap 工具** - 访问官方网站 [http://sourceforge.net/projects/gsoap2/files/]...
gSOAP(Global SOAP)是一套开源的C/C++工具包,用于简化SOAP/XML Web服务的开发。它包括了一系列的工具和库,可以帮助开发者快速构建客户端和服务端应用,并且支持多种标准协议如SOAP 1.1/1.2、HTTP/HTTPS等。gSOAP...
gSOAP(Generic SOAP)是一个开源C++库,用于构建基于Web服务的应用程序。它支持SOAP(Simple Object Access Protocol)协议,使开发者能够实现客户端和服务端的互操作性,跨越不同的操作系统和编程语言。gSOAP 2.8...
标题 "onvif wsdl源文件及gsoap生成c/c++接口" 提供的是与ONVIF协议相关的源代码和工具,这些资源是用于开发基于C或C++的ONVIF兼容设备或客户端应用程序的关键元素。ONVIF(开放网络视频接口论坛)是一种开放标准,...
5. **gSOAP client和server例子**:这些示例代码展示了如何使用gSOAP创建SOAP客户端和服务器,帮助开发者快速理解gSOAP的工作原理和用法。 6. **soapUI**:`soapUI-x32-4_0_1.rar`是一个流行的SOAP和REST测试工具,...
### C++访问WebService(gSoap方式和com组件方式) #### gSOAP访问WebService ##### 1. 下载gSOAP - **版本**: gSOAP 2.7.17 - **下载地址**: [http://sourceforge.net/projects/gsoap2/]...
gSOAP是一个开源的C/C++ SOAP(Simple Object Access Protocol)工具包,它使得开发网络服务变得更加简单。本教程将围绕“gSoap-2.8.63实现RTSP推流”这一主题,详细介绍如何使用gSOAP与RTSP结合,实现实时流媒体的...