`
eggbucket
  • 浏览: 187057 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于c++ 开发gsoap客户端(client)

 
阅读更多

如何开发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
分享到:
评论

相关推荐

    C++通过gSOAP开发WebService客户端.docx

    gSOAP是一个基于C/C++的WebService开发库,支持SOAP和XML协议。下面是开发WebService客户端的详细步骤和知识点: 一、准备工作 在开发WebService客户端之前,需要下载gSOAP库,包括源代码和工具,例如wsdl2h和...

    简单的Gsoap客户端和服务器

    本篇将重点介绍如何在Visual Studio 2010环境下搭建一个基本的GSOAP客户端和服务器。 **一、GSOAP简介** GSOAP不仅提供了SOAP消息的编解码功能,还包含了自动代码生成工具,可以自动生成客户端和服务端的接口代码,...

    gSOAP客户端和服务端的开发

    gSOAP是一种开源的工具包,用于构建Web服务和客户端应用程序,它支持SOAP(Simple Object Access Protocol)协议。SOAP是一种基于XML的数据交换协议,用于在Web上进行远程过程调用,常用于实现分布式计算。gSOAP使得...

    gsoap客户端与服务器开发

    ### gSOAP客户端与服务器开发详解 #### 一、gSOAP平台概述 gSOAP是一个功能强大的C++库,用于Web服务的客户端和服务器开发。它支持跨平台应用,包括Windows、Linux、Mac OS、UNIX等操作系统,并且兼容C/C++语言...

    c++通过gsoap调用webservices实例

    gSOAP生成C++客户端和服务器端代码,这些代码能够处理SOAP(简单对象访问协议)消息,这是一种基于XML的数据交换格式,用于Web服务通信。gSOAP能够解析XML请求,将其转换为C++函数调用,并将C++函数返回值转换回XML...

    android通过jni调用gsoap客户端的打包的so

    在Android平台上,JNI(Java Native Interface)是一种技术,允许Java代码和其他语言写的代码进行交互。...正确配置这些部分后,你就可以在Android应用中通过JNI调用gSOAP客户端的.so库来与远程SOAP服务进行通信了。

    gSoap webservices C++ 客户端

    压缩包中的`soapClient`可能是一个包含gSoap客户端代码的源文件或可执行文件,用于演示如何连接到Java Axis服务并执行简单的操作。通过阅读和运行这个文件,你可以更好地理解和学习gSoap的使用方法。 总的来说,...

    gsoap实现web service的server/client(c++)

    gSOAP是一个开源工具包,专门用于C++程序员构建基于SOAP(Simple Object Access Protocol)的Web服务。SOAP是一种XML(eXtensible Markup Language)为基础的协议,用于在分布式环境中交换结构化信息。本篇文章将...

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子)

    gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户...

    Linux下C gsoap client访问java webservice server

    在Linux环境下,使用C语言开发一个gSOAP客户端来调用Java Web服务服务器是常见的跨平台交互场景。gSOAP是一个开源的C/C++软件开发工具包,它提供了强大的SOAP(Simple Object Access Protocol)处理能力,使得非Java...

    gsoap C++ 开发webService

    在本文中,我们将深入探讨如何在C++环境下使用gSOAP开发Web服务。Web服务是一种允许不同系统之间进行交互的标准化方式,它基于XML、SOAP、WSDL和UDDI等技术,实现了跨平台的可互操作性。gSOAP是一个强大的工具包,它...

    gsoap编译的onvif客户端源码

    gSOAP则是一个开源工具,用于生成跨平台的C/C++ SOAP(简单对象访问协议)客户端和服务端代码,它支持多种Web服务标准,包括WSDL(Web服务描述语言)和XML Schema。 标题提到的"**gsoap编译的onvif客户端源码**",...

    gsoap wcf https 解决方案

    2. **gSOAP客户端证书设置**:gSOAP客户端需要配置信任的服务器证书或者提供客户端证书,以进行双向身份验证。这可以通过修改gSOAP的代码或配置文件来实现。 3. **gSOAP HTTPS连接设置**:在gSOAP客户端代码中,需要...

    C++ gSoap java webservice使用小教程(含示例)

    这对于跨语言开发场景尤其有用,比如在 C++ 应用程序中集成基于 Java 的 Web 服务功能。 #### 二、准备工作 1. **下载 gSoap 工具** - 访问官方网站 [http://sourceforge.net/projects/gsoap2/files/]...

    gsoap开发步骤

    gSOAP(Global SOAP)是一套开源的C/C++工具包,用于简化SOAP/XML Web服务的开发。它包括了一系列的工具和库,可以帮助开发者快速构建客户端和服务端应用,并且支持多种标准协议如SOAP 1.1/1.2、HTTP/HTTPS等。gSOAP...

    gsoap.rar_gSoap-2.8_gsoap_gsoap vc6_gsoap使用详解

    gSOAP(Generic SOAP)是一个开源C++库,用于构建基于Web服务的应用程序。它支持SOAP(Simple Object Access Protocol)协议,使开发者能够实现客户端和服务端的互操作性,跨越不同的操作系统和编程语言。gSOAP 2.8...

    onvif wsdl源文件及gsoap生成c/c++接口

    标题 "onvif wsdl源文件及gsoap生成c/c++接口" 提供的是与ONVIF协议相关的源代码和工具,这些资源是用于开发基于C或C++的ONVIF兼容设备或客户端应用程序的关键元素。ONVIF(开放网络视频接口论坛)是一种开放标准,...

    gsoap开发包和工具集合

    5. **gSOAP client和server例子**:这些示例代码展示了如何使用gSOAP创建SOAP客户端和服务器,帮助开发者快速理解gSOAP的工作原理和用法。 6. **soapUI**:`soapUI-x32-4_0_1.rar`是一个流行的SOAP和REST测试工具,...

    C++访问WebService(gSoap方式和com组件方式)

    ### C++访问WebService(gSoap方式和com组件方式) #### gSOAP访问WebService ##### 1. 下载gSOAP - **版本**: gSOAP 2.7.17 - **下载地址**: [http://sourceforge.net/projects/gsoap2/]...

    gSoap-2.8.63实现RTSP推流

    gSOAP是一个开源的C/C++ SOAP(Simple Object Access Protocol)工具包,它使得开发网络服务变得更加简单。本教程将围绕“gSoap-2.8.63实现RTSP推流”这一主题,详细介绍如何使用gSOAP与RTSP结合,实现实时流媒体的...

Global site tag (gtag.js) - Google Analytics