`
jklr11
  • 浏览: 5356 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

gsoap开发--QQ在线状态查询

    博客分类:
  • C++
阅读更多

第一次写技术类文章,纯粹为了记录学习的过程。感觉挺好的。

我是做java的,看我上javaeye而不是上cppblog发表文章就知道了。但是没想到我写得第一篇竟然是用c++做的程序。

废话少说。开篇。

要用gsoap当然要先有gsoap那个程序。下个吧。我就不弄链接了。

然后通过gsoap里面的wsdl2h程序把web service的wsdl文件解析成头文件。具体命令,我这里只用到

wsdl2h -o qqOnlineWebService.h qqOnlineWebService.wsdl

 

然后再用soapcpp2把头文件解析成一堆源码放到项目中。具体命令是

soapcpp2 -C -Iimport qqOnlineWebService.h

然后把soapclientlib.cpp这个文件从项目中删去,然后再把stdsoap2.cpp和stdsoap2.h加入到项目中。就开始动工了。

一般来说,服务用的类文件放在一个叫**soapproxy.h的头文件中。然后结构体文件就放在你一开始通过wsdl2h生成的头文件中。

就举显示qq在线状态的web service的例子吧。

我新建一个win Console项目,然后加入文件,然后再在main函数中输入

 

#include "stdafx.h"
#include "soapqqOnlineWebServiceSoapProxy.h"
#include "qqOnlineWebServiceSoap.nsmap"
#include <iostream>
#include <string>


using namespace std;

int main(int argc, char* argv[])
{
	qqOnlineWebServiceSoap qqOnlineC;
	_ns1__qqCheckOnline ask;
	string qqc = "120022192";
	cin>>qqc;
	ask.qqCode=&qqc;
	_ns1__qqCheckOnlineResponse ret;
	qqOnlineC.__ns1__qqCheckOnline(&ask,&ret);
	string get = *ret.qqCheckOnlineResult;

	char getstr[100];
	size_t i=0;
	for(i=0;i<ret.qqCheckOnlineResult->length();i++)
	{
		getstr[i] = get[i];
	}
	getstr[i]='\0';
	printf("%s\n",getstr);
	return 0;
}

 

然后把所有的cpp文件都改为不预编译头文件。就是右键某个cpp,选setting...,选C/C++,选precompile header,选not using ....。设置完之后还需要做一个设置,就是你的项目要在project-setting-link那里在Object/library modules 添加Ws2_32.lib这个类库。因为gsoap是通过socket传输的。然后大致上就可以 编译成功了。看看输出什么。

这里特别说明下,std:string类是很多web service使用的类型。要注意他的用法。还有就是指针。我原想直接通过指针输出的。不过没成功。呵呵。学艺不精。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics