Qt+gsoap调用WebService

2023-11-01

版权声明

本文为原创作品,请尊重作者的劳动成果。转载必须保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。

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.soapSOAP_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,charargv[])

{

     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才可以显示。


代码下载:

Qt使用gsoap来访问webservice,绝对可用例子

http://download.csdn.net/download/luchenlin4/6852861


from:http://blog.csdn.net/tingsking18/article/details/5456831?reload



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt+gsoap调用WebService 的相关文章

  • kconfig常用语法,入门必看

    kconfig 1 kconfig简单介绍 Kconfig用来配置内核 它就是各种配置界面的源文件 内核的配置工具读取各个Kconfig文件 生成配置界面供开发人员配置内核 最后生成配置文件 config 2 kconfig和makefil
  • 自己用js做一个搜索栏,超级简单

    csdn很少上线 经常在掘金摸鱼 本文掘金链接https juejin cn post 7058602557987356708 言归正传 为什么要做这个小案例呢 首先我有极度严重的强迫症 对于设备交互界面的追求是越整洁越好 另外由于我的专业
  • 数分工作了三年,我干了件很酷的事情

    目录 1 开始组建微信群 2 寻找到知识星球 3 使用微信圈子 4 使用语雀 5 开始使用飞书 从17年毕业来 一直都在干数据分析的工作 和很多转行的小伙伴一样 没有对口的科班学习 摸不清数据分析具体情况 起初充满着很多迷茫 在刚开始的1年
  • System.Text.Encoding.Default.GetString()后面无法再添加字符

    项目场景 使用 System Text Encoding Default GetString 参数1 时 传入的参数1未填满空间大小 后面仍需添加字符串或字符 问题描述 当参数1未填满空间 System Text Encoding Defa
  • Android学习路线

    Android学习路线 第一阶段 Java面向对象编程 1 Java基本数据类型与表达式 分支循环 2 String和StringBuffer的使用 正则表达式 3 面向对象的抽象 封装 继承 多态 类与对象 对象初始化和回收 构造函数 t
  • 17.网络爬虫—Scrapy入门与实战

    网络爬虫 Scrapy入门与实战 Scrapy基础 Scrapy运行流程原理 Scrapy的工作流程 Scrapy的优点 Scrapy基本使用 豆瓣网为例 创建项目 创建爬虫 配置爬虫 运行爬虫 如何用python执行cmd命令 数据解析
  • 基于R语言的贝叶斯网络模型、现代贝叶斯统计学方法

    基于R语言的贝叶斯网络模型实践技术应用 贝叶斯网络不但能够统合已有的各种统计学方法 如混合回归模型 LASSO 自回归模型 隐马模型等等 而且在很大程度上能够弥补统计学模型不能够进行因果推断的缺憾 以开源的R语言为平台 通过理论和实践相结合
  • pikachu之不安全的文件下载概述

    不安全的文件下载概述 文件下载功能在很多web系统上都会出现 一般我们当点击下载链接 便会向后台发送一个下载请求 一般这个请求会包含一个需要下载的文件名称 后台在收到请求后 会开始执行下载代码 将该文件名对应的文件response给浏览器
  • 二元对数正态分布 (bivariate lognormal distribution) 的几个性质

    二元对数正态分布 bivariate lognormal distribution 的几个性质 摘要 对数正态分布 二元正态分布 bivariate normal distribution 对数正态分布的期望与方差 二元对数正态分布的协方差
  • eclipse写MAPREDUCE程序对HBase表进行操作之 IndexBuilder(对已有表建索引)

    eclipse写MAPREDUCE程序对HBase表进行操作之 IndexBuilder 对已有表建索引 开源 hbase的example mapreduce里有个类IndexBuilder是用来对已有表建索引的 其代码有一点点需要修改 j
  • ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI

    ASP NET Process Model之一 IIS 和 ASP NET ISAPI 前几天有一个朋友在MSN上问我 ASP NET 从最初的接收到Http request到最终生成Response的整个流程到底是怎样的 我觉得这个问题涉
  • java中的CondVal_转载:do...while(0)的妙用

    MTK中有很多有关do while 0 的应用 刚开始可能有很多人不太明白为什么使用do while 0 似乎不加do while 0 该部分的代码也会只执行一次 其实do while 0 是出于优化代码考虑的 do while 0 并不是
  • C# 将ComboBox设置为禁止编辑的方法

    2018年5月8日14 53 21 将ComboBox的DropDownStyle 属性设置为 DropDownList即可 Simple 简单的下拉列表框 始终显示列表 DropDown 可以编辑 与有下拉列表 默认 DropDownLi
  • 对于随机森林的通俗理解

    原文 http blog csdn net mao xiao feng article details 52728164 对于随机森林的通俗理解 一 决策树 决策树是机器学习最基本的模型 在不考虑其他复杂情况下 我们可以用一句话来描述决策树
  • Python 量化投资实战教程(4) —KDJ 策略

    量化投资系列文章 Backtrader 教程 Python 量化投资实战教程 1 Python 量化投资实战教程 2 MACD策略 26 9 Python 量化投资实战教程 3 A股回测MACD策略 Github仓库 https githu
  • 服务治理spring cloud Admin/链路跟踪 ZipKin

    1 Spring Boot Admin Spring Boot Admin 用于监控基于 Spring Boot 的应用 它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI 1 1 简介 Spring
  • linux 下 性能,Linux(ubuntu)下iostat的安装和系统性能监控

    linux系统出现了性能问题 一般我们可以通过top iostat free vmstat等命令 来查看初步定位问题 其中iostat可以给我们提供丰富的IO状态数据 iostat 由 Red Hat Enterprise Linux AS
  • IBL-镜面反射(预滤波篇)

    文章目录 1低差异序列 2重要性采样 3 GGX重要性采样 3 1 将uv坐标转化为半球向量坐标 3 2 将半球向量坐标转化为笛卡尔坐标 3 3 将切线坐标转化为世界坐标 3 4 完整代码 4 预滤波器卷积着色器 4 1 近似 4 2 获取

随机推荐

  • 【深入理解C++】产生临时对象的情况和解决

    文章目录 1 临时对象 2 对象作为函数的参数 以传值的方式传给函数 3 类型转换生成的临时对象 4 对象作为函数的返回值 以值的方式从函数返回 1 临时对象 临时对象 也称为匿名对象 没有变量名 没有被指针指向的对象 用完后马上调用析构
  • 使用C# ASP.NET框架构建Web应用程序

    在本文中 我们将介绍如何使用C ASP NET框架来构建功能强大的Web应用程序 ASP NET是一种用于构建Web应用程序的开发框架 而C 是一种用于编写 NET应用程序的编程语言 通过结合这两种技术 我们可以创建出稳定 可扩展和易于维护
  • 【学习day4】模型选择+过拟合和欠拟合

    主要来源 李沐老师的pytorch 动手学习深度学习 鞠躬感谢 记录每日所学 欢迎讨论 目录 一 模型选择 二 训练误差和泛化误差 三 多项式回归 1 生成数据集 2 对模型进行测试和训练 3 三阶多项式函数拟合 正态 4 线性函数拟合 欠
  • tomcat加内存限制和启动多个tomcat和设置连接数

    1 加内存限制 vim opt tomcat bin catalina sh 搜索OS 在cygwin false上加上如图那句代码 JAVA OPTS server Xms4096m Xmx4096m XX MaxPermSize 512
  • 集成学习、boosting、bagging、Adaboost、GBDT、随机森林

    集成学习算法简介 什么是集成学习 集成学习通过建立几个模型来解决单一预测问题 它的工作原理是生成多个分类器 模型 各自独立地学习和作出预测 这些预测最后结合成组合预测 因此优于任何一个单分类的做出预测 机器学习的两个核心任务 如何优化训练任
  • spring 详解三 IOC(spring实例化及后处理器)

    Spring实例化基本流程 Spring在容器初始化的时候 读取XMl配置 将其封装成BeanDefinition Bean定义 对象 描述所有bean的信息 BeanDefinition会注册存储到beanDefinitionMap集合中
  • Linux安装中文字体

    前言 Lunix默认没有中文字库 很容易导致项目开发时出现中文字符乱码的情况 1 查看linux已安装字体 fc list 如出现 bash fc list command not found 说明Linux中没有安装字体库 需要先安装字体
  • Eclipse 安装checkstyle插件

    为什么80 的码农都做不了架构师 gt gt gt CheckStyle是SourceForge下的一个项目 提供了一个帮助JAVA开发人员遵守某些编码规范的工具 它能够自动化代码规范检查过程 从而使得开发人员从这项重要 但是枯燥的任务中解
  • IOS开发 生成app图标

    1 一键生成所有尺寸对应的应用图标 链接如下 图标工场 移动应用图标 启动图生成工具 一键生成所有尺寸的应用图标 启动图 2 在Assets中 将图标放在对应的位置 3 在Build Settings中 给app命名 4 Build即可
  • 【华为OD机试c++】最大化控制资源成本【2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 公司创新实验室正在研究如何最小化资源成本 最大化资源利用率 请你设计算法帮他们解决一个任务混部问题 有taskNum项任务 每个任务有开始时间
  • SetFileCompletionNotificationModes FILE_SKIP_COMPLETION_PORT_ON_SUCCESS

    SetFileCompletionNotificationModes function Sets the notification modes for a file handle allowing you to specify how co
  • [git03] 通过pycharm使用git和github的步骤(图文详解)

    一 在Pycharm工具中配置集成Git和GitHub 1 集成Git 打开Pycharm 点击File gt Settins gt Version Control gt Git 然后在 Path to Git executable中选择本
  • Django根据数据库表反向生成models

    1 创建Django项目 创建工程 django admin py startproject movie 创建app python manage py startapp App 在settings py里面添加App INSTALLED A
  • Vue3.0入门 + Vant3.0移动端实践(三)使用Cordova打包Android App

    接着上面两节 把做成的h5小应用打包成android的app放置在手机上看看效果 如何把一个h5应用打包成android的app 使用Cordova就是一种简单不错的办法 当然也有其他的一些办法如使用HBuilderX这一强大的IDE工具
  • VS Code开发常用插件

    VS Code开发常用插件 Chinese Simplified Language 英文菜鸟必备的汉化插件 One Dark Pro个人比较喜欢的一个主题 色调看起来很舒服 Bracket Pair Colerizer加深括号的光标 高亮显
  • Linux服务字符集--locale命令

    在查看Tomcat日志中 会发现中文乱码 乱码的原因就是字符集问题 在 Linux 中 可以使用 locale 命令查看当前系统的字符集 该命令输出当前系统所使用的语言环境信息 包括地域 编码等 执行以下命令 locale 输出结果可能类似
  • 使用Spring Initializer快速创建Spring Boot项目

    默认生成的Spring Boot项目 主程序已经生成好了 resources文件夹中目录结构 static 保存所有的静态资源 templates 保存所有的模板页面 默认不支持JSP页面 可以使用模板引擎 freemarker等 appl
  • github上的文档结构学习

    开源项目目录规范 此为前端开发团队遵循和约定的开源项目目录规范 意在实现开源项目目录结构的一致性 说明 文档中使用的关键字 MUST MUST NOT REQUIRED SHALL SHALL NOT SHOULD SHOULD NOT R
  • RocketMQ发送接收项目实战+对cos或者oss服务上的pdf文件和图片加水印

    使用mq的原因 因为项目中文件上传比较多 需要使用mq分担当前系统线程压力 所以单独使用一个服务来处理文件上传 加快文件上传速度的同时也缓解了当前服务的处理压力 核心服务1 一个项目 发送mq GeneralFileEvent 需要发送给m
  • Qt+gsoap调用WebService

    版权声明 本文为原创作品 请尊重作者的劳动成果 转载必须保持文章完整性 并以超链接形式注明原始作者 tingsking18 和主站点地址 方便其他朋友提问和指正 Qt gsoap调用WebService 1 前言 Qt本身给我们提供了调用W