今天学习如何用QtSoap访问Web Service服务。这里调用的是查询QQ在线状态的服务qqOnlineWebService。调用的几个步骤:

1.创建QtSoapMessage对象 message;

2.message调用setMethod设置调用的服务

3.message调用addMethodArgument设置参数

4.创建QtSoapHttpTransport  *m_pHttp

5.m_pHttp调用setHost,setAction

6.最后m_pHttp调用submitRequest提交请求

class WebServiceClient : public QDialog

{

Q_OBJECT

public:

WebServiceClient(QWidget *parent = 0,Qt::WFlags flags = 0);

~WebServiceClient();

private slots:

voidSubmitSlot();

voidResponseSlot(const QtSoapMessage &response);

private:

voidresizeEvent(QResizeEvent *event);

QLineEdit   *m_pNumber;

QPushButton *m_pSubmit;

QLineEdit   *m_pResult;

QLabel      *m_pQQNumber;

QLabel      *m_pState;

QtSoapHttpTransport  *m_pHttp;

};

WebServiceClient::WebServiceClient(QWidget*parent, Qt::WFlags flags)

: QDialog(parent, flags)

{

m_pQQNumber = newQLabel(tr("QQ号码"),this);

m_pState = newQLabel(tr("QQ状态"),this);

m_pNumber = newQLineEdit(this);

m_pResult = newQLineEdit(this);

m_pResult->setReadOnly(true);

m_pSubmit = newQPushButton(tr("提交"),this);

m_pHttp = newQtSoapHttpTransport;

connect(m_pSubmit,SIGNAL(clicked()),this,SLOT(SubmitSlot()));

connect(m_pHttp,SIGNAL(responseReady( const QtSoapMessage & )),this,SLOT(ResponseSlot(constQtSoapMessage &)));

this->setFixedSize(QSize(300,300));

}

WebServiceClient::~WebServiceClient()

{

}

voidWebServiceClient::ResponseSlot( constQtSoapMessage & response )

{

QString xml = response.toXmlString();

QDomDocument doc;

doc.setContent(xml);

QDomNodeList nodeList =doc.elementsByTagName("qqCheckOnlineResult");

if(nodeList.size())

{

QDomNode resultNode =nodeList.at(0);

QString result =resultNode.toElement().text();

QString state;

if(QString::compare(result,"Y") ==0)

{

state = tr("在线");

}

elseif (QString::compare(result,"N") == 0)

{

state = tr("离线");

}

elseif (QString::compare(result,"E") == 0)

{

state = tr("QQ号码错误");

}

elseif (QString::compare(result,"A") == 0)

{

state = tr("商业用户验证失败");

}

elseif (QString::compare(result,"V") == 0)

{

state = tr("免费用户超过数量");

}

m_pResult->setText(state);

}

}

voidWebServiceClient::SubmitSlot()

{

QtSoapMessage message;

message.setMethod("qqCheckOnline","http://WebXml.com.cn/");

m_pHttp->setAction("http://WebXml.com.cn/qqCheckOnline");

m_pHttp->setHost("webservice.webxml.com.cn");

QString number = m_pNumber->text();

message.addMethodArgument("qqCode","",number);

QString xml = message.toXmlString();

m_pHttp->submitRequest(message,"/webservices/qqOnlineWebService.asmx");

}

voidWebServiceClient::resizeEvent( QResizeEvent *event)

{

m_pQQNumber->setGeometry(5,5,50,20);

m_pNumber->setGeometry(60,5,100,20);

m_pSubmit->setGeometry(160,5,50,20);

m_pState->setGeometry(5,30,50,20);

m_pResult->setGeometry(60,30,100,20);

}

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

{

QApplication a(argc, argv);

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));

QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));

WebServiceClient w;

w.show();

returna.exec();

}

http://blog.csdn.net/hai200501019/article/details/19755987

QtSoap调用Web Service(QtSoap是非官方应用)的更多相关文章

  1. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  2. C#开发和调用Web Service

    http://blog.csdn.net/h0322/article/details/4776819 1.1.Web Service基本概念 Web Service也叫XML Web Service ...

  3. php5调用web service

    工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经 ...

  4. 通过ksoap2-android来调用Web Service操作的实例

    import java.io.IOException; import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObjec ...

  5. 使用Android应用调用Web Service

    Java本身提供了丰富的Web  Service支持,比如Sun公司指定的JAX-WS  2规范,还有Apache开源组织所提供的Axis1.Axis2.CXF等,这些技术不仅可以用于非常方便地对外提 ...

  6. Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...

  7. ASP.NET调用Web Service

    1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...

  8. delphi调用web service出现 Unable to retrieve the URL endpoint for Service/Port .....

    delphi调用web service出现 Unable to retrieve the URL endpoint  for Service/Port, 错误截图如下 查了很长时间, 发现在DataM ...

  9. php5调用web service (笔者测试成功)

    转自:http://www.cnblogs.com/smallmuda/archive/2010/10/12/1848700.html 感谢作者分享 工作中需要用php调用web service接口, ...

随机推荐

  1. android中使用surfaceview+MediaPlayer播放视频

    Android中播放视频主要有两种方式: 使用其自带的播放器.指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型 使用android自带的VideoView,这种方法 ...

  2. 【原】spring boot在整合项目依赖的问题

    最近要开发新的项目,就花了几天时间看了下spring boot的相关资料,然后做了一个demo,不得不说开发效率确实很快,几行注解就完成了事务,aop,数据库等相关配置:但由于先前习惯了spring ...

  3. 「OC」 基本语法

    一.OC简介 在C语言的基础上,增加了一层最小的面向对象语法:完全兼容C语言:可以在OC代码中混入C语言代码,甚至是C++代码:可以使用OC开发Mac OS X平台和iOS平台的应用程序. 二.OC语 ...

  4. Python之路Day14

    主要内容:jQuery进阶.CSS伪类和伪元素.jQuery插件 tab菜单样式 checkbox全选.反选 位置:scrollTop和offset 事件:两种绑定事件的方式和委托delegate a ...

  5. 5.对象创建型模式-原型PROTOTYPE

    原型:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型实现:1.用于创建对象的具体类必须实现clone()操作,用于对象克隆自己以生成新的对象.下面通过原型来实现一个抽象工厂Ma ...

  6. ASP.NET jQuery 随笔 在TextBox里面阻止复制、剪切和粘贴事件

    当用户要输入一些密码.信用卡信息和银行账号等敏感信息,用户更希望手工通过键盘敲入数据,而好过通过剪贴板复制粘贴. 我们先来看下实现后的效果: <%@ Page Language="C# ...

  7. KMP算法与一个经典概率问题

    考虑一个事件,它有两种概率均等的结果.比如掷硬币,出现正面和反面的机会是相等的.现在我们希望知道,如果我不断抛掷硬币,需要多长时间才能得到一个特定的序列. 序列一:反面.正面.反面序列二:反面.正面. ...

  8. 【解决ViewPager在大屏上滑动不流畅】 设置ViewPager滑动翻页距离

    在项目中做了一个ViewPager+Fragment滑动翻页的效果,在模拟器和小米手机上测试也比较正常.但是换到4.7以上屏幕测试的时候发现老是滑动失效. 因为系统默认的滑动策略是当用户滑动超过半屏之 ...

  9. KindEditor - 富文本编辑器 - 使用+上传图片

    代码高亮:http://www.cnblogs.com/KTblog/p/5205214.html 效果: 项目结构: Extend:存放各种扩展 BlogAction.class.php:博文模块 ...

  10. 【IE】浏览器模式与文档模式 及其开发中处理方式

    原文:http://blog.csdn.net/neo_liu0000/article/details/7589731 什么是浏览器模式和文本模式? 经常使用IE开发者工具的同学,肯定见过浏览器模式和 ...