Qt+gsoap调用WebService

1.       前言

Qt本身给我们提供了调用WebService的解决方案qsoap,看了一下他的介绍,感觉实在是太弱了,而且又是个新出的东西,所以还是决定不用他。既然使用Qt,那当然是跨平台的解决方案才合适,显示MS的SoapToolKit也不在选择的范围。于是改用老牌的gsoap。

2.       环境

Qt版本:

Qt4.6(其他版本也适合)

GSOAP版本:

gsoap2.7.12(其他版本也适用)

服务端开发环境:

VS2008、C#、.net2.0以上

3.       准备

http://sourceforge.net/projects/gsoap2下载gsoap,然后解压,并把

gsoap-2.7/gsoap/bin/win32设置到系统的Path中去。

4.       服务端

打开VS2008,建立WebService工程。全部采用默认设置就可以了。

最后修改一下代码,加上点中文。如下:

namespace WebService1

{

/// <summary>

/// Service1 的摘要说明

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[ToolboxItem(false)]

// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

// [System.Web.Script.Services.ScriptService]

public class Service1 : System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

{

return "Hello World你好";

}

}

}

5.       客户端

l         建立文件夹client/gsoap。并把gsoap-2.7/gsoap/下的stdsoap2.cpp和stdsoap2.h拷贝至刚刚建立的gsoap文件夹下。

l         打开命令行,cd C:/WSTest/client/gsoap,然后执行:

wsdl2h -I"E:/gsoap/source/gsoap-2.7/gsoap/WS" -o test.h http://localhost:5925/Service1.asmx?WSDL

该操作将生成C:/WSTest/client/gsoap/test.h

l         执行soapcpp2 -I"E:/gsoap/source/gsoap-2.7/gsoap/import" test.h

l         然后我们编写test.cpp

#include <QApplication>

#include <QPushButton>

#include <QLineEdit>

#include <QHBoxLayout>

#include <QDialog>

#include "gsoap/Service1Soap.nsmap"

#include "gsoap/soapService1SoapProxy.h"

class MyDialog:public QDialog

{

Q_OBJECT

public:

MyDialog(QWidget *parent=0):QDialog(parent)

{

btn =new QPushButton("invoke");

line = new QLineEdit;

connect(btn,SIGNAL(clicked()),this,SLOT(OnClicked()));

QHBoxLayout *layout = new QHBoxLayout;

layout->addWidget(line);

layout->addWidget(btn);

setLayout(layout);

}

private:

QPushButton *btn;

QLineEdit *line;

public slots:

void OnClicked()

{

Service1Soap soap;

soap_set_mode(soap.soap, SOAP_C_UTFSTRING);

_ns1__HelloWorld req;

_ns1__HelloWorldResponse res;

soap.__ns2__HelloWorld(&req,&res);

QString str = QString::fromUtf8(res.HelloWorldResult->c_str());

line->setText(str);

}

};

#include "test.moc"

int main(int argc,char* argv[])

{

QApplication app(argc,argv);

MyDialog md;

md.show();

return app.exec();

}

l         然后就是编写pro文件。

SOURCES += test.cpp /

gsoap/soapC.cpp /

gsoap/soapClient.cpp /

gsoap/stdsoap2.cpp

l         最后就是qmake、nmake

注意:

soap_set_mode(soap.soap, SOAP_C_UTFSTRING);这句是为了显示中文的,让字符串采用utf8编码。当我们在使用命令行程序的时候,即使使用了该选项也显示不出中文,因为命令行显示的字符串必须经过decode成GBK才可以显示。

http://blog.csdn.net/tingsking18/article/details/5456831

时间: 2025-01-07 15:14:34

Qt+gsoap调用WebService的相关文章

【工作笔记】c++使用gsoap调用webservice

工作中需要用c++来调用第三方的webservice接口,于是使用了gsoap工具.为了初步掌握gsoap的使用方法,这里写了一个demo程序来完成对于天气预报查询接口的调用. 安装好gsoap工具,然后使用make gsoap命令编译. /*makefile文件如下*/ #make file for testing gsoap all:test GSOAP_ROOT = /usr/share/gsoap/import WSDL_FILES = $(wildcard *.wsdl) OBJS =

C/C++利用gsoap库调用WebService

C/C++调用WebService需要用到soap库,一般使用的有gsoap和axis cpp两种实现,这里使用gsoap来调用.gsoap可以在 linxu.windows.mac多种平台上使用. gsoap的主页地址是http://gsoap2.sourceforge.net/ 新建一个WebService: 1 //写一个简单的方法 2 [WebMethod(Description="返回字符串")] 3 public string HelloWorld(string str)

Qt调用WebService

从网上查找Qt调用WebService的方案,需要下载三方的类库,而且需要使用好几个控制台命令,才能生成代理客户端类.因为只是简单的测试,没有采用这种方式,直接使用HTTP的Get获取网站内容,也非常简单,调用开放的翻译WebService接口.代码如下:     QEventLoop loop;//事件循环对象,在任何时候,你都可以创建一个QEventLoop的对象,然后调用它的exec() 来开始一个局部的事件循环.     QNetworkAccessManager manager(thi

纯c gSoap实现WebService

一.系统环境linux操作系统kernel2.4.2,安装gsoap2.6到目录/usr/local/gsoap二.gSOAP的简要使用例子下面是一个简单的例子,实现一个加法运算的WebService,具体功能是cli端输入num1和num2,server端返回一个num1和num2相加的结果sum. 1. 首先,我们需要做的是写一个函数声明文件,来定义接口函数ns__add,文件名字为add.h,内容如下: //gsoap ns service name: add//gsoap ns serv

gsoap开发webservice

gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多.绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户必须改变程序结构来适应相关的类库.与之相反,gSOAP利用编译器技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来. gSOAP的编译器能够自动的将用户定义的本地化的C或C++数据类型转变为符合XML语法的数据结构

使用Gsoap创建webservice(c++)

使用Gsoap创建WebService (c++) 1.         下载编译Gsoap gSOAP工具包是用于SOAP和REST XML Web服务以及通用C / C ++ XML数据绑定的C和C ++软件开发工具包. 该工具包分析WSDL和XML模式(单独或作为组合集),并将XML模式类型和SOAP / REST XML消息传递协议映射为易于使用且高效的C和C ++代码. 它还支持通过自动生成XML序列化代码和WSDL规范将(传统)C和C ++应用程序作为XML Web服务公开. 下载G

Java调用WebService 接口 实例

这里给大家介绍一下,Java调用webservice的一个实例的过程. 本项目不能运行,因为接口地址不可用. 这里只是给大家介绍一个过程,同时留作自己的笔记.如果要学习,可以参照别人的实例.比较好. ①选择项目根目录的src ,右键,new --> webservice client 然后输入地址: http://172.18.100.52:456/hello?wsdl 必须要加wsdl结尾,这样才是一个webservice的接口. finlish.这时候刷新项目.可以看到项目下/src/com

Android通过ksoap2这个框架调用webservice大讲堂

昨天有人问我Android怎么连接mysql数据库,和对数据库的操作呀,我想把,给他说说json通信,可是他并不知道怎么弄,哎算了吧,直接叫他用ksoap吧,给他说了大半天,好多零碎的知识,看来还是有必要把这些东西整合起来,一方面自己有时候也看,另一方面当然是能帮助没有做个的小伙伴,其实东西不是很多,就是讲的有点详细,不怕多,就怕不仔细, WebServices简介 Web services是一种部署在Web上的对象或者组件,能够通过Internet进行调用的应用程序.Web services

PB11.5创建及调用WebService

我今天做了这个“PB创建及调用WebService”的小作业,下面我来分享一下我的整个实践过程以及我遇到的问题,希望对大家有所帮助,这个小作业是分以下三部来完成的: 一.构建WebService ①创建Workspace,Workspace命名为:Your_WebService ②建立.NET Web Service Target,这一步只需要一路Next即可 最后生产的项目文件中至少包含三项,一个webservice2应用,一个p_webservice2部署,一个n_webservice2用户