gSOAP开发实例(一)qq在线客户端

本文介绍一个gSOAP的开发实例,利用腾讯QQ在线状态 WEB 服务,服务器地址:http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx

WSDL地址:http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl

首先,在 gsoap-2.8/gsoap/wsdl/ 下创建一个 qq 目录

-bash-3.2$ mkdir -p qq

改变当前路径为 qq

-bash-3.2$ cd qq

使用 wsdl2h 生成 qq.h ,如果希望生成纯 C 代码,需要加上 -c 参数,否则,将会生成 C++ 代码

-bash-3.2$ wsdl2h -c -o qq.h http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl   这里注意的是必须打开DNS服务器

然后,使用 soapcpp2 生成客户端存根程序和相关的头文件、资源文件,由于我们只开发客户端程序,所以可以指定 -C 参数

-bash-3.2$ soapcpp2 -C qq.h

接着,就可以利用存根程序提供的接口编写客户端程序了,过程相当简单。

qqOnline.c 

#include "soapH.h"
#include "qqOnlineWebServiceSoap12.nsmap"
int main(int argc, char **argv) {
        if ( argc != 2 ) {
                printf("Usage: %s qq_code\n", argv[0]);
                exit(-1);
        }
        struct soap soap;
        soap_init(&soap);
        struct _ns1__qqCheckOnline request;
        struct _ns1__qqCheckOnlineResponse response;
        request.qqCode = argv[1];
        if ( soap_call___ns3__qqCheckOnline(&soap, NULL, NULL, &request, &response) == SOAP_OK ) {
        char* state = NULL;
        if(strcmp(response.qqCheckOnlineResult,"Y")==0) state="在线";
        if(strcmp(response.qqCheckOnlineResult,"N")==0) state="不在线";
        printf("你的QQ:%s  状态是:%s\n",argv[1], state);
        } else {
        soap_print_fault(&soap, stderr);
        }
        soap_destroy(&soap);
        soap_end(&soap);
        soap_done(&soap);
        return 0;
}

编译命令是:

gcc -O2 -o qq qqOnline.c soapC.c soapClient.c ../../stdsoap2.c -I../.. -L../.. 

一切正常的话,就大功告成了:

-bash-3.2$ ./qq 123456

显示在线与否

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值