`
yesjavame
  • 浏览: 687253 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Symbian学习笔记(20) - 用gSOAP更简单地实现Web Services Client

阅读更多

昨天折腾了一下那个gSOAP,发现这东西比Symbian自带的WebServiceAPI更简单方便,推荐使用!

gSOAP的官方网站是:http://gsoap2.sourceforge.net/

具体使用方法不多说,因为网上GOOGLE 一下很多资料。下面只对在symbian环境下使用略说几点。

我下载的是最新版的v2.7.10,下载的压缩包里就有一个symbian目录,里面是在symbian的例子,可以参考。

试着做了一个HelloWorld,还是访问前面做的那个web service,按照它的例子步骤如下:

1.解开软件压缩包。

2.根据wsdl生成代码存根等H/CPP文件。在命令行进入gsoap\bin\win32 目录,先后执行以下指令:

wsdl2 -s -o pservice.h http://192.168.0.201/uim/pservice.asmx?WSDL

在当前目录得到一个pservice.h文件。

soapcpp2 -CLwx pservice.h

在当前目录得到多个源文件,每个文件的具体作用含义大家可以看官方资料。

3.在Carbide C++中新建一个工程,我就叫它HelloWsTwo,直接用了那个HelloWorld模板框架。然后将步骤2生成的几个文件弄过去,首先将soapH.h/soapStub.h/soapPServiceSoapProxy.h拷到工程的inc目录下,将soapC.cpp/soapClient.cpp拷到工程的src目录下。

4.还有两个文件在gsoap目录下,stdsoap2.h和stdsoap2.cpp,也拷入相应目录,这里其实按例子中的readme说明是不拷的,而是在mmp中修改一下指过来,不过,因为我们需要修改这个cpp所以方便起见,还是拷过去吧,省得跟其它工程弄混了。

5.先修改HelloWsTwoUi这个类,在头文件中增加如下代码:

// 此处省略

#include "soapPServiceSoapProxy.h"

// FORWARD DECLARATIONS

class CHelloWSTwoAppView;
class PServiceSoap;

//此处省略

private:

CHelloWSTwoAppView* iAppView;

PServiceSoap * iService;

//此处省略
引入那个代理头文件,然后加一个PServiceSoap类型的成员变量iService。接着修改cpp文件,在构造时new它,在析构时delete它即可。
case ECommand1: 
{

//webservice



if(iService){

_ns1__HelloWorldResponse resp;

if(iService->__ns2__HelloWorld(NULL,&resp)==SOAP_OK){

	RDebug::Printf(resp.HelloWorldResult);

}

}

}

break;

真正的工作过程相当简单,就是先声明一个返回值_ns1_HelloWorldResponse类型的变量resp,调用iService的成员函数__ns2__HelloWorld即可。第一个参数是endpoint,可以为NULL,因为stub里已经有了,第二个参数就是resp的引用。

6.现在还要修改mmp文件,carbide是会自动帮你加上几个源文件的,接受即可。此外,mmp中更需要增加一个包含目录include\libc,以及几个链接库,如下:

SYSTEMINCLUDE \Epoc32\include\libc LIBRARY eexe.lib estlib.lib ecrt0.lib CAPABILITY ReadUserData NetworkServices nostrictdef

7.就这么容易,但是编译时,不行,出错了!报undefined _soap_outLONG64之类的错误!!

这时开始就折腾了我差不多一天。其实修改也挺简单的,打开那个stdsoap2.cpp,我们发现其实这个函数是有的,只是被一个宏WITH_LEAN给关掉了,所以打开即可。 但是打开宏,错误更多了,没办法,只能将这个函数定义前的宏注释掉看看,两个错变成三个错了,硬着头皮继续,在stdsoap2.cpp中注掉多个#ifndef WITH_LEAN的条件,终于不再报错了。

一切运行也就正常了。这个错误实在是够变态的了吧。

总结一下: 1.建议将stdsoap2.*弄到工程里去,因为改了源代码应该会与PC平台的应用相冲突,当然假如你并不打算将gSOAP用于symbian以外的场合,可以仍放在gsoap目录下。

2.用gsoap最大的好处是不用自己去解析那个soap响应,也不用自己去封装soap请求了。

分享到:
评论

相关推荐

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

    本篇文章将深入探讨如何利用gSOAP来实现Web服务的服务器端(Server)和客户端(Client)。 首先,我们需要了解gSOAP的工作原理。gSOAP自动生成C++类和函数,使得开发者可以轻松地处理XML消息。它包括一个代码生成器...

    MFC--gsoap获取天气

    在IT行业中,MFC(Microsoft Foundation Class)是一个用于开发Windows应用程序的C++类库,而gSOAP则是一个开源工具包,用于实现Web服务客户端和服务器。这篇内容将深入探讨如何利用MFC结合gSOAP来获取天气预报信息...

    gSoap webservices C++ 客户端

    通过阅读和运行这个文件,你可以更好地理解和学习gSoap的使用方法。 总的来说,gSoap是一个强大的工具,它简化了C++与Web服务之间的交互,使得开发人员能够在C++环境中轻松调用Java、Python、.NET等各种平台上的Web...

    c++通过gsoap调用webservices实例

    gSOAP库是C和C++编程语言的一个开源工具包,它使得开发人员可以方便地访问和实现Web服务。在这个实例中,我们将探讨如何使用gSOAP在C++中调用Web服务。 首先,理解gSOAP的工作原理至关重要。gSOAP生成C++客户端和...

    gsoap.rar_gSoap-2.8_gsoap_gsoap vc6_gsoap使用详解

    总的来说,gSOAP是一个强大的工具,使得开发和使用SOAP服务变得简单。通过阅读`soapdoc2.pdf`,你可以深入理解gSOAP的工作原理,掌握如何在VC6环境下利用gSOAP构建高效、安全的Web服务应用。无论你是新手还是经验...

    gsoap http webapi

    1. 配置gSOAP:首先,需要下载并安装gSOAP,然后使用gSOAP的wsdl2h工具生成服务头文件,该文件包含了Web API接口的定义。 2. 编码请求:使用gSOAP提供的库函数,如soap_init()初始化SOAP环境,然后设置HTTP GET请求...

    论文研究-基于gSOAP的Symbian平台移动终端与Web Service的连接及实现 .pdf

    基于gSOAP的Symbian平台移动终端与Web Service的连接及实现,魏巍,王哲龙,对于Symbian平台下的移动商务系统,移动终端与Web Service连接的一般方法是使用SDK提供的Web Service API进行连接,再利用Symbian下XML...

    学习gsoap的简单例子

    【gSOAP学习:一个简单的电话号码归属地查询实例】 gSOAP是一个开源的C/C++软件开发工具包,用于构建Web服务客户端和服务器。它允许程序员使用标准的SOAP(Simple Object Access Protocol)协议来交换XML数据,使...

    gsoap 2.7——VC中用来实现web服务的插件

    **gSOAP 2.7:在VC中实现Web服务的利器** gSOAP 2.7是一款强大的开源工具包,主要用于构建C和C++应用程序的Web服务客户端和服务器。它允许开发者利用SOAP(Simple Object Access Protocol)协议来实现分布式计算,...

    gsoap_2.7 linux下安装_命令使用

    **gSOAP 2.7 在 Linux (RHEL) 下的安装与命令使用详解** gSOAP 是一个开源的软件开发工具包,它允许程序员在 C/C++ 中创建基于 Web 服务的应用程序。...持续学习和实践将使你更熟练地掌握这个强大的工具。

    c++ gsoap webservice文件传送demo

    gSOAP是一个开源的C和C++ Web服务工具包,它允许开发者轻松地创建和使用SOAP(简单对象访问协议)服务,包括文件传输功能。 首先,我们需要了解gSOAP的基本概念。gSOAP提供了一种自动化的编译机制,通过解析WSDL...

    gSOAP.rar_gSOAP Web Server_gsoapxiazai _linux gsoap

    在实际开发中,gSOAP的文档(如gSOAP.docx)是非常重要的资源,它提供了详细的API参考、示例代码和教程,帮助开发者更好地理解和使用这个库。 总的来说,gSOAP是一个强大且灵活的Web服务开发工具,无论是在Windows...

    gsoap Client

    对应前面发的C++ gsoap webserver的client端,windows系统环境下两台机器测试通过没有问题

    gsoap 调用 web service 的接口工具

    总之,gSOAP为VC++开发者提供了一套高效、便捷的方案来调用和实现Web Service,使得跨平台、跨语言的系统集成变得更加简单。在实际开发过程中,结合gSOAP的文档和示例代码,可以快速上手并实现高效的Web Service...

    gsoap网络资源汇总和相关连接

    - 如何利用gSOAP实现更复杂的功能,例如安全性增强、事务管理等。 - 高级用法示例,提供代码片段和解释。 #### 七、gSOAP教程和使用 **知识点:** 1. **基础教程:** - gSOAP的基本概念和工作原理。 - 安装...

    gsoap2.8实现onvif协议

    总之,gSOAP是实现ONVIF协议的强大工具,通过它,开发者可以轻松地构建能够与各种ONVIF设备交互的应用程序。理解gSOAP的工作原理以及如何利用它来解析和使用WSDL文件,是成功实现ONVIF功能的关键。同时,对ONVIF协议...

    用gSOAP开发Web Service程序

    ### 用gSOAP开发Web Service程序 #### 一、gSOAP简介 gSOAP是一个非常强大的工具,主要用于将SOAP/XML绑定到C/C++语言中。它能够帮助开发者快速且简便地开发出SOAP/XML的服务器端和客户端应用。由于gSOAP具备优秀...

    python和gsoap实现server/client模式,很好的资料

    根据给定文件的信息,我们可以提炼出以下关于使用Python与gSOAP实现Server/Client模式的关键知识点: ### Python ZSI 模块介绍 - **模块概述**:Python ZSI(Zolera System Inc.)是一个用于创建和操作Web服务的...

Global site tag (gtag.js) - Google Analytics