【急】soap 类 如何 定义

youxin2012 2013-03-08 09:33:36
开始学webserver 遇到个问题,想请教大侠

主函数如下
int main(void)
{
printf("very good!/n");
_ns1__getWeatherbyCityName city; //这样的对象将生成怎样的对象啊?
_ns1__getWeatherbyCityNameResponse cityResponse;

WeatherWebServiceSoapProxy service;

if(service.getWeatherbyCityName(city,cityResponse) == SOAP_OK)
{
//如何返回天气的值
}
return 0;
}


其中_ns1__getWeatherbyCityName的类定义如下
class SOAP_CMAC _ns1__getWeatherbyCityName
{
public:
std::string *theCityName; /* optional element of type xsd:string */
struct soap *soap; /* transient */
public:
virtual int soap_type() const { return 16; } /* = unique id SOAP_TYPE__ns1__getWeatherbyCityName */
virtual void soap_default(struct soap*);
virtual void soap_serialize(struct soap*) const;
virtual int soap_put(struct soap*, const char*, const char*) const;
virtual int soap_out(struct soap*, const char*, int, const char*) const;
virtual void *soap_get(struct soap*, const char*, const char*);
virtual void *soap_in(struct soap*, const char*, const char*);
_ns1__getWeatherbyCityName() { _ns1__getWeatherbyCityName::soap_default(NULL); }
virtual ~_ns1__getWeatherbyCityName() { }
};

class SOAP_CMAC _ns1__getWeatherbyCityNameResponse
{
public:
ns1__ArrayOfString *getWeatherbyCityNameResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type ns1:ArrayOfString */
struct soap *soap; /* transient */
public:
virtual int soap_type() const { return 17; } /* = unique id SOAP_TYPE__ns1__getWeatherbyCityNameResponse */
virtual void soap_default(struct soap*);
virtual void soap_serialize(struct soap*) const;
virtual int soap_put(struct soap*, const char*, const char*) const;
virtual int soap_out(struct soap*, const char*, int, const char*) const;
virtual void *soap_get(struct soap*, const char*, const char*);
virtual void *soap_in(struct soap*, const char*, const char*);
_ns1__getWeatherbyCityNameResponse() { _ns1__getWeatherbyCityNameResponse::soap_default(NULL); }
virtual ~_ns1__getWeatherbyCityNameResponse() { }
};


另外 函数原型 为
virtual	int getWeatherbyCityName(_ns1__getWeatherbyCityName *ns1__getWeatherbyCityName, _ns1__getWeatherbyCityNameResponse *ns1__getWeatherbyCityNameResponse) { return this->getWeatherbyCityName(NULL, NULL, ns1__getWeatherbyCityName, ns1__getWeatherbyCityNameResponse); }
virtual int getWeatherbyCityName(const char *endpoint, const char *soap_action, _ns1__getWeatherbyCityName *ns1__getWeatherbyCityName, _ns1__getWeatherbyCityNameResponse *ns1__getWeatherbyCityNameResponse);


我想问下,这样的参数如何定义,不会初始化 soap 变量啊? 怎样才能显示返回值呢??谢谢大家


...全文
515 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tr3301103 2015-01-26
  • 打赏
  • 举报
回复
最近也在 C++ 用到了 WebService,感觉好麻烦,在这里说点自己的感受和问题,希望有经验的大牛过来顶起。对于楼上说的“添加引用”的方法,貌似VS2008之后就没有了,至少VC++2010中是已经用不了了。后来在网上找的用GSOAP (更楼主用的应该是一样的)。先是用GSOAP生成一些代码,然后把代码包含到工程中使用。以楼主给的例子: 使用的时候一般都是使用三个类, 一个用来提供接口,如:WeatherWebServiceSoapProxy; 一个用来传递参数,如:_ns1__getWeatherbyCityName; 一个用来接收返回值,如:_ns1__getWeatherbyCityNameResponse ; 楼主贴出的代码中可以看到,在 _ns1__getWeatherbyCityName类中有一个成员变量 std::string *theCityName,他就是传递参数,所以只要定义这个类的对象,然后给他的这个成员变量赋值就行了。同样在用来接收返回值的类中有这样一个类型的成员变量:ns1__ArrayOfString,这应该也是一个类,返回值就保存在这个类的成员变量中(楼主没有贴出代码,所以不知道具体是什么变量)。具体接口的调用方法楼主的 main函数中已经给出。 以上是我的使用方法,下面是我的疑惑(虽然这个帖子已经是很久之前的,还是希望有大牛来帮忙解答一下): 1)soap 结构体是干什么用的? 2)我调用的Webservice接口主要功能是操作数据库,但是返回值是XML格式的字符串,这就导致每次查询结果都必须做XML解析,实在是太麻烦了,有没有什么方法可以不用解析XML,直接获取结果?
  • 打赏
  • 举报
回复
youxin2012 2013-03-09
  • 打赏
  • 举报
回复
灰色的,不可选啊。我想问下,根据给出的原型,我的实参应如何定义,才能带入函数,有如何显示 返回值呢?
threenewbee 2013-03-08
  • 打赏
  • 举报
回复
菜单 项目-添加web引用。

12,166

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧