热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Symbian学习笔记(21)原来还有这个工具wsdl2cpp,访问webservice也很简单

在论坛里看到有人问使用wsdl2cpp生成代码,才知道原来symbian提供了一个辅助工具来生成webserviceclient的代码,比起我上回折腾的

在论坛里看到有人问使用wsdl2cpp生成代码,才知道原来symbian提供了一个辅助工具来生成webservice client的代码,比起我上回折腾的自己参考AddressBook例子做的webservice客户端要简单多了,类似于gSOAP的使用。

首先,去forum.nokia.com.cn搜一下WSDL-to-C++_for_S60,这是用于Carbice Vs的工具,不过也可以独立安装,用命令行来生成所需要的代码。下载安装即可。

第二步,运行它的wsdl2cpp工具,得到一些源代码,不过它比gSOAP弱智一点点,不能直接给出一个wsdl的URL,所以最好将wsdl下载到本地,给它一个文件名即可:

wsdl2cpp --callback-class PServiceConsumer --include-dir .\work\inc --source-dir .\work\src pservice.wsdl

这样我们会在当前目录下的work/src和work/inc下得到它生成的头与源文件,实现的原理仍是用的Symbian内置的Web Service API来做的。将这些代码弄到工程里去。

第三步,工程里新增了代码,修改mmp,与直接使用这些API一样,总之,这个工具只是帮助我们生成了源码框架,比较方便罢了。不过额外有一点增加的地方是:

LIBRARY XmlDataBinding.lib USERINCLUDE\epoc32\include\libc USERINCLUDE\epoc32\include\xmldatabinding

这里的xmldatabinding是新的东西,所以之前需要安装,在安装wsdl-to-c++工具后,有一个XmlDataBinding.zip在它的目录下,打开解到相应的epoc32目录里去即可。它包括了lib和一些头文件。

并且,在手机跑,应该将XmlDataBinding.sis也安装一下,从这一点看,似乎比gSOAP要麻烦一点了。

第四步,现在开始动手修改代码,很简单了。

private:// DataCHelloWSThreeAppView* iAppView;CPServiceService * iService;CPServiceConsumer * iObserver;

在头文件里增加iService和iObserver就可以了,CPP中有两步,一是初始化连接,二是远程调用方法:

//这里初始化代码CSenXmlServiceDescription *pServiceDesc &#61; CSenXmlServiceDescription::NewLC(KServiceEndpoint, KNullDesC8()); pServiceDesc->SetFrameworkIdL(KDefaultBasicWebServicesFrameworkID); iObserver &#61; CPServiceConsumer::NewLC(); iService &#61; CPServiceService::NewLC(*iObserver,*pServiceDesc);_LIT(KStr,"Init service.");LOG(KStr);//这里远程调用代码if(iObserver->iStatus&#61;&#61;KSenConnectionStatusReady){RHelloWorld aHello;RHelloWorldResponse aHelloResp;TRAPD(error,aHelloResp&#61;iService->HelloWorldL(aHello));if(error){ RDebug::Printf("error %d",error);}TBuf<64> buf;buf.Copy(aHelloResp.iHelloWorldResult);_LIT(KStr,"result is %S");LOG_FORMAT((KStr,buf));}

这样就好了&#xff0c;当然析构时要删除这些成员变量。

总结一下&#xff0c;其实我用三种方法来调用web service&#xff0c;都是最简单的HelloWorld&#xff0c;比较而言&#xff0c;还是gSOAP比较方便。



推荐阅读
author-avatar
耿佳霖彦婷淑云
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有