Qt调用WebService
从网上查找Qt调用WebService的方案,需要下载三方的类库,而且需要使用好几个控制台命令,才能生成代理客户端类.因为只是简单的测试,没有采用这种方式,直接使用HTTP的Get获取网站内容,也非常简单,调用开放的翻译WebService接口.代码如下:
QEventLoop loop;//事件循环对象,在任何时候,你都可以创建一个QEventLoop的对象,然后调用它的exec() 来开始一个局部的事件循环。
QNetworkAccessManager manager(this);//QHTTP等类都过时了,推荐使用这个类实现网络通信
QString sUrl = transUrl + ui.leChinese->text();//生成HTTP的url地址
QUrl::toPercentEncoding(sUrl);//进行url编码
QNetworkReply *reply = manager.get(QNetworkRequest(sUrl));//调用get方法获取WebService返回的xml
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); //调用返回后事件循环对象退出
//开启子事件循环 等待调用返回
loop.exec();
QFile file(TRANSFILENAME);
file.open(QIODevice::WriteOnly);
QTextStream out(&file);
out.setCodec("UTF8");//指定文件的编码,否则文件中的中文乱码
QTextCodec *codec = QTextCodec::codecForName("UTF8");
out << codec->toUnicode(reply->readAll()) << endl;//从HTTP请求响应对象中读取xml文件内容,并存入到文件
file.close();
QFile xmlfile(TRANSFILENAME);
if(!xmlfile.open(QFile::ReadOnly | QFile::Text)) return;
QTextStream floStream(&xmlfile);
floStream.setCodec(codec);
QString xmlData = floStream.readAll();
xmlfile.close();
QDomDocument doc;//创建Dom类对象解析xml
QString errorInfo;
int errorLine, errorColumn;
if(doc.setContent(xmlData))
{
QDomNode node = doc.documentElement().elementsByTagName("diffgr:diffgram").at(0);
node = node.toElement().elementsByTagName("Dictionary").at(0);
node = node.toElement().elementsByTagName("Translation").at(0);
ui.leResult->setText(node.toElement().text());//得到xml中某个节点的值
}
xmlfile.close();
Qt调用WebService的更多相关文章
- Qt+gsoap调用WebService
1. 前言 Qt本身给我们提供了调用WebService的解决方案qsoap,看了一下他的介绍,感觉实在是太弱了,而且又是个新出的东西,所以还是决定不用他.既然使用Qt,那当然是跨平台的解 ...
- 一个简单的webservice的demo(下)winform异步调用webservice
绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单 ...
- 调用webservice进行身份验证
因为同事说在调用webservice的时候会弹出身份验证的窗口,直接调用会返回401,原因是站点部署的时候设置了身份验证(账号名称自己配置).因而在调用的时候需要加入身份验证的凭证. 至于如何获取身份 ...
- java接口调用——webservice就是一个RPC而已
很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...
- Android调用WebService
这两天给老师做地铁app的demo,与后台的交互要用WebService,还挺麻烦的.所以想写点,希望有用. Web Services(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一 ...
- C# 调用webservice 几种办法(转载)
原文地址: http://www.cnblogs.com/eagle1986/archive/2012/09/03/2669699.html //=========================== ...
- 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】
不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...
- C#winForm调用WebService的远程接口
Web Service 的创建简单编码.发布和部署 上一篇详细概述了WebService的创建,编码,发布和部署,那么作为客户端的程序如何访问远程端的WebService 接下来看一下具体步骤: ...
- 【学习篇:他山之石,把玉攻】jquery实现调用webservice
1.webservice端 using System; using System.Collections.Generic; using System.Web; using System.Web.Ser ...
随机推荐
- HTML5自定义属性对象Dataset简介
一.html5 自定义属性介绍 我之前翻译的“你必须知道的28个HTML5特征.窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设 ...
- seleniumAccessors
assertErrorOnNext(message) 告诉Selenium在下一个命令执行时期待有错误. 参数:·message–我们所期望的错误信息.如果出现不正确的错误信息,该命令将失败.同断言相 ...
- selenium+python笔记4
#!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 使用unittest组织用例 ""& ...
- Mybatis 学习-2
创建基于session的util类,在线程中共享SqlSession package cn.smartapp.blogs.pojo; import java.io.Serializable; impo ...
- thinkPHP开发基础知识 包括变量神马的
hinkPHP框架开发的应用程序,一般都采用单一入口的方式,下面是在应用首页文件中实现的定义: 1.在首页定义thinkPHP框架路径 2.定义项目名称及路径,一般项目名称与项目文件夹名称保持一致 3 ...
- Linux查看用户登陆历史记录
last 命令: 功能说明:列出目前与过去登入系统的用户相关信息. 语 法:last [-adRx][-f ][-n ][帐号名称-][终端机编号-] 补充说明:单独执行last指令,它会读取位于/v ...
- easyUI dialog 弹窗 居中显示
默认情况下应该是在屏幕居中显示的.但是有的时候没有居中只要重新纠正下就可以了 $('#add_dialog').dialog('open'); //打开添加对话框 $('#add_dialog').w ...
- E-Eating Together(POJ 3670)
Eating Together Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5579 Accepted: 2713 D ...
- 使用strace工具故障排查的5种简单方法
使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...
- solr 4.3.0 配置
scheme.xml <?xml version="1.0" encoding="UTF-8" ?> <schema name="t ...