【发布时间】:2016-11-28 05:28:41
【问题描述】:
我正在尝试为 Web 服务创建客户端应用程序。在该应用程序中,我需要通过该 Web 服务链接传递一些整数,然后 Web 服务给我一些 XML 格式的数据。我能够完成对该 Web 服务的 ping 操作,但我不知道如何通过该 Web 服务传递整数值。请给我一些 C++ 中请求-响应 Web 服务的示例代码。响应数据采用 XML 格式,我想存储在某个文本文件或向量中。我需要使用打印机打印的数据。
这是我为 Web 服务开发的代码:
void Downloader::doDownload()
{
manager = new QNetworkAccessManager(this);
connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://api.flickr.com/services/soap/")));
exit(0);
}
void Downloader::replyFinished (QNetworkReply *reply)
{
if(reply->error())
{
qDebug() << "ERROR!!!!";
qDebug() << reply->errorString();
}
else
{
qDebug() << reply->header(QNetworkRequest::ContentTypeHeader).toString();
qDebug() << reply->header(QNetworkRequest::LastModifiedHeader).toDateTime().toString();
qDebug() << reply->header(QNetworkRequest::ContentLengthHeader).toULongLong();
qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
qDebug() << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();
QFile *file = new QFile("/root/Downloads/QT Web Services/WebServiceResponseData.txt");
if(file->open(QFile::Append))
{
file->write(reply->readAll());
file->flush();
file->close();
}
delete file;
}
reply->deleteLater();
}
【问题讨论】:
-
您当前的代码遇到的确切问题是什么?如果您只是在寻找使用
QNetworkAccessManager的示例,请查看this answer。 -
感谢 Mike 先生的回复。在您的回答中,您解析 JSON,但我需要 XML。我真正想要的是,我必须使用 Web 服务连接服务器。在该服务器客户数据存储上,我只需要通过该 Web 服务传递客户 ID,然后服务器以 XML 格式向我提供该特定客户的数据,我想存储该 xml 文件以供以后使用打印机在纸上打印该数据。
-
看看doc.qt.io/qt-5/xml-processing.html,用Qt处理/处理XML。
标签: c++ xml qt web-services response