如何将QnetworkManager用于REST API
How to use QNetworkManager for REST api?
我想做一个通过REST API访问数据的课程,例如:
class MeteoStation{
int getLatestTemperature();
int getLatestPessure();
private:
QNetworkManager nmng;
}
如何实现此方法?通常我在使用:
int MeteoStation::getLatestTemperature(){
...
QEventLoop eventLoop;
connect(&m_nam,SIGNAL(finished(QNetworkReply*)),&eventLoop,SLOT(quit()));
QNetworkReply *reply = m_nam.get( req );
eventLoop.exec();
reply->readAll()
...
}
,但由于不建议使用内部Qeventloop,我应该如何看到响应属于谁?
MeteoStation::MeteoStation(){
connect(&nmam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(parseNetworkResponse(QNetworkReply*)));
}
void MeteoStation::parseNetworkResponse( QNetworkReply *finished )
{
QByteArray data = finished->readAll();
...
是的,最好保存类线程。您如何在代码中解决该问题?
与:
同步呼叫有多糟糕QNetworkRequest req(url);
QScopedPointer<QNetworkReply> reply(nam.get(req));
QTime timeout= QTime::currentTime().addSecs(10);
while( QTime::currentTime() < timeout && !reply->isFinished()){
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
if (reply->error() != QNetworkReply::NoError) {
qDebug() << "Failure" <<reply->errorString();
}
QByteArray data = reply->readAll();
我使用qcoreapplication :: processevents()解决了问题。响应在MS中存在,我能够在靠近libcurl的功能中实现功能。
QNetworkRequest req(url);
QScopedPointer<QNetworkReply> reply(nam.get(req));
QTime timeout= QTime::currentTime().addSecs(10);
while( QTime::currentTime() < timeout && !reply->isFinished()){
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
if (reply->error() != QNetworkReply::NoError) {
qDebug() << "Failure" <<reply->errorString();
}
QByteArray data = reply->readAll();
QT文档应提供您需要的所有信息。您创建一个NAM,连接完成的信号,发送请求。
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(parseNetworkResponse(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://qt-project.org")));
检测请求属于的请求不应该太难。答复包含URL。它可能有所不同,但不是不同:
...但是出于多种原因可能会有所不同(例如,一个 文件路径是绝对或规范的)。
Qurl Qnetworkreply :: url()const
返回下载或上传的内容的URL。请注意 URL可能与原始请求不同。
相关文章:
- Microsoft C++ 用于图形 API 的 Rest SDK
- Visual C++ and REST API
- QT 和 JIRA Rest API: /rest/api/2/issue/createmeta 意外返回韩语的 iss
- 用于连接在线 REST 服务器的 REST API
- 如何将 JSON 数据发送到 REST API?
- 使用 REST SDK 将图像从 OpenCV 3 发送到认知人脸 API C++
- 使用boost :: Beast进行CPU重的REST API,我是否应该使用异步或同步方式来实现它们以期望延迟
- 在 Firebase 中使用 Rest api(Casablanca c++) 添加子项时遇到问题
- 如何将QnetworkManager用于REST API
- 如何以编程方式为应用程序创建文件夹,以使用 BOX REST API 在其中上传内容
- 通过C#使用C++boost.asio Rest API
- 为瘦客户端设计客户端(厚)/服务器+额外的REST API
- c++ lib 与初学者的 REST API 配合使用
- 如何使用 JSON 实现带有 POCO C++ 网络库的 REST API 服务器
- 如何在卡萨布兰卡 REST API 中检索授权标头
- 使用OneDrive Rest API进行批量下载
- 在Windows上使用OpenSSL访问带有身份验证的REST API
- 如何在xcode中使用curl和c++的rest API
- 如何实现REST API服务器
- 使用REST API的JSON分阶段