gsoap for Qt (windows)

本文经过自己实践总结,同时参考网上另外一哥们文档.

环境:win32,vs2008,Qt 4.7,gsoap2.7.17

一,安装vs2008+Qt 4.7+插件就不说了,直接用QtCreator也可以。

二,到官网下载gsoap2.7.17,下不到自己想办法,我上传群共享了。但群号不方便说。

三,源码解压,然后把gsoap-2.7/gsoap/bin/win32设置到系统的Path中去,这个目录下有两个可执行文件wsdl2h.exe和soapcpp2.exe,这两个文件可以根据wsdl接口文件生成你需要的客户端接口文件。

四,建立服务器webserivce测试,下面代码拿来注意:

打开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你好";

}

}

}

五,进行客户端gaosp操作:

1,建立文件夹client/gsoap。并把gsoap-2.7/gsoap/下的stdsoap2.cpp和stdsoap2.h拷贝至刚刚建立的gsoap文件夹下。另外还要考几个文件gsoap/soapC.cpp ,gsoap/soapClient.cpp ,有需要的自己继续拷贝,我测试就这几个够了。

2,wsdl2h –I "E:/gsoap/source/gsoap-2.7/gsoap/WS"-s -o test.h http://localhost:5925/Service1.asmx?WSDL(加-s是表示不使用stl库)

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

4, 编写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 =
newQHBoxLayout;

layout->addWidget(line);

layout->addWidget(btn);

setLayout(layout);

}

private:

QPushButton*btn;

QLineEdit*line;

public
slots:

void
OnClicked()

{

Service1Soapsoap;

soap_set_mode(soap.soap,
SOAP_C_UTFSTRING);

_ns1__HelloWorldreq;

_ns1__HelloWorldResponseres;

soap.__ns2__HelloWorld(&req,&res);

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

line->setText(str);

}

};

#include
"test.moc"

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

{

QApplicationapp(argc,argv);

MyDialogmd;

md.show();

return
app.exec();

}

根据需要自己修改。

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

七,soapcpp2常用选项

  • -C 仅生成客户端代码
  • -S 仅生成服务器端代码
  • -L 不要产生soapClientLib.c和soapServerLib.c文件
  • -c 产生纯C代码,否则是C++代码(与头文件有关)
  • -I 指定import路径(见上文)
  • -x 不要产生XML示例文件
  • -i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。

八,生成的客户端接口在test.h文件中,可以查看编码。

时间: 2024-10-11 03:35:14

gsoap for Qt (windows)的相关文章

QT - windows下编译坏境安装

qt在windows下的使用方式有两种: 1.将qt内置在vs下,例如,内置在vs2010下,使用vs的编译器及调试器. 2.在windows下,使用qt creator以及MingW作为编译器的使用. 当然两种方式也可以共存. 一.现在讲解第一种方式,qt4.8.5内置在vs2010下: 下载:1.“qt-win-opensource-4.8.5-vs2010.exe” 注意为安装版,不需要编译. 2.“qt-vs-addin-1.1.7.exe” 直接安装就可以,安装后,运行VS2010,菜

qt windows分发工具使用(windoployqt)

在qt的安装目录下:QTDIR/bin/windeployqt 例如我的默认安装在: C:\Qt\Qt5.3.1\5.3\msvc2013 windoployqt在: C:\Qt\Qt5.3.1\5.3\msvc2013\bin\windoployqt.exe 注意: 需要把qt的安装路径设置到PATH环境变量中.windoployqt是在PATH环境变量中查找所需要的qt库. 然后再在要安装的目录下运行: D:\source\rabbitim\install>windeployqt rabbi

QT windows平台安装

1 QT的下载与安装 http://www.qt.io/download-open-source/#section-2 .因为这个版本不在需要手动配置QT类库,编译器,方便实用 安装需要注意的地方 稍等10分钟就会安装完毕! 测试一次 HelloWorld! 文件菜单,新建一个项目,非 QT项目,纯C 语言项目 #include <stdio.h> int main(void) {     printf("Hello World!\n");     return 0; }

qt windows分发工具使用

 在qt的安装目录下:QTDIR/bin/windeployqt 例如我的默认安装在: C:\Qt\Qt5.3.1\5.3\msvc2013 windoployqt在: C:\Qt\Qt5.3.1\5.3\msvc2013\bin\windoployqt.exe 注意: 需要把qt的安装路径设置到PATH环境变量中.windoployqt是在PATH环境变量中查找所需要的qt库. 然后再在要安装的目录下运行: D:\source\rabbitim\install>windeployqt ra

pthread在Qt+Windows下的使用

pthread是牛逼的跨平台线程库,无需多介绍. 下载pthread-win32,解压后将x86里的pthreadVC2.dll放到system32目录里,将pthreadVC2.lib放入项目中去,Qt项目里包含pthread.h就可以使用pthread的功能了. 这种是动态链接,因为静态链接一直没搞成功,我怀疑pthreadVC2.lib只是个外壳,里边是调用动态库pthreadVC2.dll的.

QT程序在windows下部署发布

转载:http://www.cnblogs.com/Fan_Fan/archive/2010/05/29/1746860.html QT程序在windows下部署发布 以下包括了部分网上收集的,以及qt帮助里的内容(Deploying an Application on Qt/Windows) 首先,打开windows控制台,然后,找到vs安装目录下的bin里,执行 vcvars32.bat 这个脚本.执行完之后,vs需要的所有环境变量就已经设置好了. 我的环境是QT 4.3.3 + mingw

QT、QTE、qtopia区别

QT.QTE.qtopia区别 Qt的授权是分为两条线,商业版和开源版.如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的:如果使用的是开源版的Qt,由于其使用的是GPL协议,那么可发出的程序也必须是GPL的.不过自从qt 4.5.0版本,诺基亚公司使用了LGPL协议,那么写出的程序就可以据为己有了! Qt 的版本是按照不同的图形系统来划分的,目前分为四个版本:Win32版,适用于Windows平台:X11版,适合于使用了x系统的各种 linux 和 unix的平台:Mac版,适合与苹果

让Qt支持Win7的Aero和毛玻璃效果

Qt5增加了许多特性,其中 Qt Windows Extras 模块就增加了对Win7 Aero 效果的支持. 官网的介绍如下: Qt Windows Extras provide classes and functions that enable you to use miscellaneous Windows-specific functions. For example, you can convert Qt objects to Windows object handles and ma

Qt移动应用开发(七):QML与Java的交互

上一篇文章讲到了如何实现QML和C++的交互,QML和C++的交互方法有很多,它们分别为使用上下文变量.注册QML类以及注册QML单例.那么这一次我们要了解如何使QML和Java进行交互.这里主要讲的是在Android系统下的实现,不适用于桌面平台J2SE的JVM. 原创文章,反对未声明的引用.原博客地址:http://blog.csdn.net/gamesdev/article/details/37997555 Qt5中针对不同的平台适配并开发了不同的模块,比如说Qt Windows Extr