在Symbian上应用gSoap

Symbian上gSoap
==============
官网 http://gsoap2.sourceforge.net/
版本v2.7.10

进入以下目录 gsoap/gsoap_2.7.10/gsoap-2.7/gsoap/bin/win32
Z:/win32> wsdl2h -s -o pservice.h http://192.168.0.201/uim/pservice.asmx?WSDL
其中
1、pservice.h为用户自定义头文件名称
2、网址为wsdl的地址,也可以将其保存为xml文件,直接读取本地文件如:
Z:/win32> wsdl2h -s -o pservice.h pservice.xml
可能会出现某个bat文件找不到,如果发现本地已经生成pservice.h,那此错误可以忽略

Z:/win32> soapcpp2 -CLwx pservice.h
将会生成一堆.cpp和.h文件

将soapH.h/soapStub.h/soapPServiceSoapProxy.h拷到工程的inc目录下
将soapC.cpp/soapClient.cpp拷到工程的src目录下
还有两个文件在gsoap目录下,stdsoap2.h和stdsoap2.cpp,也拷入相应目录

mmp文件中追加
SYSTEMINCLUDE Epoc32/include/libc
LIBRARY eexe.lib estlib.lib ecrt0.lib
CAPABILITY ReadUserData NetworkServices
如果编译模拟器版本,应该没有问题,如果编译GCCE版本,可能会报错,说eexe.dso找不到
可以直接把Lib中的eexe.lib Remove掉,然后是ecrt0.dso找不到,同样将ecrt0.lib去掉。

继续编译,发现有类似undefined _soap_outLONG64的错误,打开那个stdsoap2.cpp发现函数
soap_outLONG64前有个宏定义#ifndef WITH_LEAN,将这个宏去掉,把函数打开,再编译,
仍有错,发现还是宏定义#ifndef WITH_LEAN的问题,去掉大概4个宏定义后,发现编译没问
题了,可以加gsoap的操作了

头文件中加入
#include "soapPServiceSoapProxy.h"
……
class PServiceSoap;
……
PServiceSoap * iService;

源文件中加入
……
iService = new PServiceSoap();
……
if(iService){
  _ns1__HelloWorldResponse resp;
  _ns1__HelloWorld hw;
  int ret = iService->__ns2__HelloWorld(&hw,&resp);
  if(ret == SOAP_OK){
    RDebug::Printf(resp.HelloWorldResult);
  }
}

OK了,运行!
可以运行中发现ret返回4,SOAP_TYPE 错误
则需要打开stdsoap2.h,在大约386行,发现有# elif defined(SYMBIAN),这是Symbian的
配置项,加入#  define HAVE_SSCANF,保存,再编译、运行

恭喜你,OK了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值