微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Qt编写WebService客户端 (gsoap)

 http://blog.chinaunix.net/uid-24118190-id-4230340.html
Qt编写WebService客户端  2014-04-28 18:58:09
@H_404_11@

分类: 其他平台


点击(此处)折叠或打开

    @H_404_30@ /*
    @H_404_30@ #filename: main.cpp @H_404_30@
    @H_404_30@ prj: Qt编写WebService客户端
    @H_404_30@ date: 2014-4-28
    @H_404_30@ auth: pz
    @H_404_30@
    @H_404_30@ 假设已经有一个ws服务端在运行,提供由用户id查询用户名的服务,下面直接使用其soap服务定义 .h 文件在qt中开发客户端。
    @H_404_30@
    @H_404_30@
    @H_404_30@
    @H_404_30@ 1. 准备
    @H_404_30@ 1.1 create directory:
    @H_404_30@ soaptest/client/
    @H_404_30@ soaptest/gsoap/
    @H_404_30@
    @H_404_30@ 1.2 DOWNLOAD gsoap_2.8.15.zip, extract following file/directory to soaptest:
    @H_404_30@ gsoap_2\gsoap-2\bin_win32\
    @H_404_30@ gsoap_2\{stdsoap2.h.cpp}
    @H_404_30@ gsoap_2\import\
    @H_404_30@
    @H_404_30@ 2. soapcpp2 编译
    @H_404_30@ 2.1 edit soap H file\test.h
    @H_404_30@ ==
    @H_404_30@ /gsoap ns service name: cu
    @H_404_30@ /gsoap ns service namespace: http:/localhost/cu.wsdl
    @H_404_30@ /gsoap ns service location/home/cu
    @H_404_30@ /gsoap ns service executable: cu.cgi
    @H_404_30@ /gsoap ns service encoding: encoded
    @H_404_30@ /gsoap ns schema namespace: urn:cu
    @H_404_30@ /gsoap ns schema form: unqualified
    @H_404_30@
    @H_404_30@
    @H_404_30@ struct ns__MyTestRequest
    @H_404_30@ {
    @H_404_30@     char* id;
    @H_404_30@ };
    @H_404_30@
    @H_404_30@ struct ns__MyTestResponse
    @H_404_30@ {
    @H_404_30@     int Result;
    @H_404_30@     char* name;
    @H_404_30@
    @H_404_30@ int ns__MyTest(struct ns__MyTestRequest *req*rsp)=
    @H_404_30@
    @H_404_30@ 2.2 soapcpp2
    @H_404_30@ E\Qt\QtGuiEx\soaptest> bin_win32\soapcpp2 --I"./import" test.h
    @H_404_30@
    @H_404_30@ Note:
    @H_404_30@ -C generate webservice client
    @H_404_30@ -c pure c
    @H_404_30@ -j with proxy
    @H_404_30@
    @H_404_30@ 3. 编译客户端
    @H_404_30@ 根据上一步 soapcpp2 是否带选项 -j,打开/关闭下面的宏定义,然后编译qt程序。
    @H_404_30@ #define USING_PROXY -j
    @H_404_30@
    @H_404_30@ 4. 运行结果
    @H_404_30@ 输入 id="pz"
    @H_404_30@ 输出 name = "pengzhen"
    @H_404_30@
    @H_404_30@ */
    @H_404_30@
    @H_404_30@
    @H_404_30@
    @H_404_30@ #include <QApplication>
    @H_404_30@ #include <QDebug<QWidget>
    @H_404_30@ #include "../gsoap/cu.nsmap"
    @H_404_30@
    @H_404_30@ -j
    @H_404_30@ const char *endpoint"http://192.168.250.101:9000/cu";
    @H_404_30@
    @H_404_30@ #ifdef USING_PROXY
    @H_404_30@
    @H_404_30@ / with proxy
    @H_404_30@ #include "../gsoap/soapcuProxy.h"
    @H_404_30@ int main(int argc*argv[])
    @H_404_30@ {
    @H_404_30@     cuProxy soapX;
    @H_404_30@
    @H_404_30@     struct ns__MyTestRequest req = {"pz";
    @H_404_30@     struct ns__MyTestResponse res;
    @H_404_30@
    @H_404_30@
    @H_404_30@
    @H_404_30@   soapX.MyTest(endpointNULL&req&res;
    @H_404_30@   qDebug(<< "result:" < res.Result;
    @H_404_30@   if(res.Result = 0)
    @H_404_30@   {
    @H_404_30@       qDebug) "name of " < req.id ":" .name}
    @H_404_30@
    @H_404_30@ return 0}
    @H_404_30@
    @H_404_30@ #else
    @H_404_30@
    @H_404_30@ / without proxy
    @H_404_30@ #include "../gsoap/soapH.h"
    @H_404_30@
    @H_404_30@ {
    @H_404_30@     struct soap soapX;
    @H_404_30@     soap_init&soapX;
    @H_404_30@     /soap_set_namespaces;
    @H_404_30@     soap_set_mode;
    @H_404_30@
    @H_404_30@   soap_call_ns__MyTest{
    @H_404_30@     qDebug}
    @H_404_30@
    @H_404_30@
    @H_404_30@
    @H_404_30@ return 0}
    @H_404_30@ #endif
qt工程文件

点击(此处)折叠或打开

# filename: cli.pro @H_404_30@ @H_404_30@ LIBS +-lwsock32
@H_404_30@
@H_404_30@ SOURCES \
@H_404_30@     main.cpp \
@H_404_30@     .\soapC\soapClient\stdsoap2.cpp
@H_404_30@
@H_404_30@ # for proxy
@H_404_30@ SOURCES \soapcuProxy.cpp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐