加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Qt调用WebService

发布时间:2020-12-16 23:01:39 所属栏目:安全 来源:网络整理
导读:从网上查找Qt调用WebService的方案,需要下载三方的类库,而且需要使用好几个控制台命令,才能生成代理客户端类.因为只是简单的测试,没有采用这种方式,直接使用HTTP的Get获取网站内容,也非常简单,调用开放的翻译WebService接口.代码如下:? ??? QEventLoop loop;
从网上查找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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读