Qt之QtSoap(访问WebService)
来源:互联网 发布:韦东山java是开源的吗 编辑:程序博客网 时间:2024/06/04 20:01
简述
Qt本身给我们提供了调用WebService的解决方案QtSoap,源码及示例见:qt-solutions-qtsoap
- 简述
- 下载编译
- 使用
- 实例解析
- 示例
- 效果
- 源码
- 更多参考
下载编译
下载源码后,需要修改一些地方(我的版本是Qt5),按照错误提示修改即可,很简单。
编译完成之后会生成QtSolutions_SOAP-headd.lib、QtSolutions_SOAP-headd.dll。。。
使用
拷贝QtSolutions_SOAP-headd.lib至lib目录下,拷贝qtsoap.h至include目录下。
pro中添加库文件及库目录:
INCLUDEPATH += $$PWD/includeLIBS += -L$$PWD/lib -lQtSolutions_SOAP-headd
实例解析
下面,我们以“获得腾讯QQ在线状态”为例,见:WebXml.com.cn,里面包含了大量的Web服务,例如:手机号码归属地查询,电子邮件地址验证、城市天气预报查询等。
示例
SOAP 1.1
以下是SOAP1.1请求和响应示例。所显示的占位符需替换为实际值。
效果
源码
// 构建控件m_pQQLabel = new QLabel(this);m_pStateLabel = new QLabel(this);m_pQQLineEdit = new QLineEdit(this);m_pStateLineEdit = new QLineEdit(this);m_pSubmitButton = new QPushButton(this);m_pStateLineEdit->setReadOnly(true);m_pQQLabel->setText(QString::fromLocal8Bit("QQ号码:"));m_pStateLabel->setText(QString::fromLocal8Bit("QQ状态:"));m_pSubmitButton->setText(QString::fromLocal8Bit("提交"));QGridLayout *pLayout = new QGridLayout();pLayout->addWidget(m_pQQLabel, 0, 0);pLayout->addWidget(m_pQQLineEdit, 0, 1);pLayout->addWidget(m_pStateLabel, 1, 0);pLayout->addWidget(m_pStateLineEdit, 1, 1);pLayout->addWidget(m_pSubmitButton, 2, 1, 1, 1, Qt::AlignRight);pLayout->setSpacing(10);pLayout->setContentsMargins(10, 10, 10, 10);setLayout(pLayout);// 连接信号槽m_pHttp = new QtSoapHttpTransport(this);connect(m_pSubmitButton, SIGNAL(clicked()), this, SLOT(onSubmit()));connect(m_pHttp, SIGNAL(responseReady(const QtSoapMessage &)), this, SLOT(onResponse(const QtSoapMessage &)));// 提交请求void MainWindow::onSubmit(){ QtSoapMessage message; // 设置方法 message.setMethod("qqCheckOnline", "http://WebXml.com.cn/"); // 设置动作 m_pHttp->setAction("http://WebXml.com.cn/qqCheckOnline"); // 设置主机 m_pHttp->setHost("www.webxml.com.cn"); // 添加方法参数 QString strQQ = m_pQQLineEdit->text(); message.addMethodArgument("qqCode", "", strQQ); QString strXML = message.toXmlString(); // 提交请求 m_pHttp->submitRequest(message, "/webservices/qqOnlineWebService.asmx");}void MainWindow::onResponse(const QtSoapMessage &response){ QString strXML = response.toXmlString(); QDomDocument doc; doc.setContent(strXML); // 接在在线状态 QDomNodeList nodeList = doc.elementsByTagName("qqCheckOnlineResult"); if (!nodeList.isEmpty()) { QDomNode node = nodeList.at(0); QString strResult = node.toElement().text(); QString strState("N/A"); if (QString::compare(strResult, "Y") ==0) { strState = QString::fromLocal8Bit("在线"); } else if (QString::compare(strResult, "N") == 0) { strState = QString::fromLocal8Bit("离线"); } else if (QString::compare(strResult, "E") == 0) { strState = QString::fromLocal8Bit("QQ号码错误"); } else if (QString::compare(strResult, "A") == 0) { strState = QString::fromLocal8Bit("商业用户验证失败"); } else if (QString::compare(strResult, "V") == 0) { strState = QString::fromLocal8Bit("免费用户超过数量"); } m_pStateLineEdit->setText(strState); }}
我们也可以使用qq号码进行在线验证:qqCheckOnline
更多参考
- SOAP 教程
- Web服务编程,REST与SOAP
1 0
- Qt之QtSoap(访问WebService)
- Qt之QtSoap(访问WebService)
- QT QHttp 访问 WEBSERVICE 范例
- QT QHttp 访问 WEBSERVICE 范例
- QT+Gsoap访问cxf WebService
- QtSoap向webservice传递结构体或类参数
- Spring之访问(消费)WebService
- Qt数据库之访问 SQLite
- php访问webservice之scoap方法
- Android访问远程数据库之调用Webservice
- 访问webService
- Windows程序(C# VS 2008)杂记之Java访问Webservice服务
- Qt数据库之数据库访问工具 DBUtil
- Qt学习笔记之数据库的访问
- 工作代码片段-QtSOAP
- QtSoap调用Web Service
- axis客户端访问webservice方法(转)
- AndroidNote010.Android访问webservice(上)服务器端
- iOS根据标签不同长度内容按钮自动换行
- Python里有趣的列表解析和生成器表达式
- 向Master注册
- 堆排序总结
- 向json数组添加元素
- Qt之QtSoap(访问WebService)
- GitHub版本控制使用(命令行实际操作图解Git使用方法)
- Linux下使用laravel5.2
- 使用Http协议访问网络
- H5新增的块级的语义元素
- Bresenham画线算法
- 构造一个简单的MBR分区表
- Android显示系统_由浅入深_01_屏幕与坐标系统
- 哈夫曼树基本操作