首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QNetworkAccessManager和Xml回复

QNetworkAccessManager和Xml回复
EN

Stack Overflow用户
提问于 2012-06-14 04:29:06
回答 1查看 1.4K关注 0票数 0

我试图使用QNetworkAccessmanager向本地主机/conductor/api/provider_accounts.xml发送请求,但问题是当我用浏览器打开它时,我会得到适当的输出,但当我用QNetworkAccessmanager做同样的事情时,我根本得不到任何东西。以下是我的代码

代码语言:javascript
复制
  void ServiceProvider::replyFinished(QNetworkReply * reply)
 {
 qDebug()<<reply->readAll();
 QString data=(QString)reply->readAll();
 qDebug()<<data;
 QXmlStreamReader xml(data);
 QXmlStreamAttributes attrib;
    while(!xml.atEnd()){
        xml.readNextStartElement();
        if(xml.name()=="name" && !xml.isEndElement()){
            attrib=xml.attributes();
            QString name=attrib.value("name").toString();
            qDebug()<<name;
            }
    }
}

void ServiceProvider::pushImage()
{
manager = new QNetworkAccessManager(this);
manager->get(QNetworkRequest(QUrl("https://localhost/conductor   
/api/provider_accounts.xml")));
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
}
EN

回答 1

Stack Overflow用户

发布于 2012-06-16 23:10:45

你不能重复阅读回复:

代码语言:javascript
复制
qDebug()<<reply->readAll();
QString data=(QString)reply->readAll();

上面的qDebug()行将使用所有数据。第二次调用readAll()也是不正确的,因为它返回了一个QByteArray。您不能像上面那样简单地将其转换为QString,然后期望它能够工作。您需要检查回复的编码,并使用适当的转换函数,如QString::fromUtf8(reply->readAll())

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11022822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档