4
A
回答
4
這是一個簡單的HTTP後(我使用Qt 5.3.2)
int Connection::postRequest(QString requestType, QUrl params){
QString params_array = params.query();
QNetworkRequest request(user->url);
request.setHeader(QNetworkRequest::ContentLengthHeader, QByteArray::number(params_array.size()));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QEventLoop waitLoop;
QNetworkAccessManager* connection = new QNetworkAccessManager(/*`this` can also be passed*/);
QNetworkReply* reply = connection->post(request, params_array.toUtf8());
QObject::connect(reply, SIGNAL(finished()), &waitLoop, SLOT(quit()));
waitLoop.exec();
int errorCode = reply->error();
if (errorCode != 0){
// Show Error Message
}
else{
// Parse "reply"
}
delete reply;
delete connection;
return errorCode;
}
1
假設您不需要維護龐大的代碼庫,正確的方法是使用新的QNetworkAccessManager類。
4
使用QNetworkAccessManager
Qt中5.你可以使用一個事件循環要等到答覆完畢,然後閱讀可用字節:
QString My_class::My_Method()
{
QNetworkAccessManager manager;
QNetworkReply *reply = manager.get(QNetworkRequest(QUrl(myURL)));
QEventLoop loop;
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), &loop, SLOT(quit()));
loop.exec();
QByteArray bts = reply->readAll();
QString str(bts);
delete reply;
return str;
}
也可以通過QNetworkAccessManager
的finished
信號連接到一個槽做在異步方式:
connect(&manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(onFinished(QNetworkReply*)));
還有讀取數據:
void onFinished(QNetworkReply* reply)
{
if (reply->error() == QNetworkReply::NoError)
{
QByteArray bts = reply->readAll();
...
}
}
相關問題
- 1. 錯誤與QT QHTTP
- 2. Qt5在QtQuick2中使用QWidget
- 3. 在Qt5 beta中使用QtWebKit
- 4. 在QT5中使用qtmotifextension
- 5. 在庫中使用Qt5
- 6. 發送QHTTP請求加入
- 7. 如何使用QHttp進行壓縮?
- 8. 在QT5
- 9. 在Qt5的QTableView中繪製行背景是不可能的了?
- 10. Qmak在cygwin中找不到QT5
- 11. QProgressBar在QT5中導致性能不佳?
- 12. 垂直可調整QTableView中的QT5
- 13. 我QHTTP得到()調用不能在Windows工作,但確實在Linux上
- 14. QT5:使用drawPixMap()
- 15. 聯用QT5
- 16. 實現在QT5
- 17. 如何在Qt5中啓用不推薦使用的函數
- 18. QT5中的glGenBuffers在哪裏?
- 19. 如何在Qt5中使用擴展glGenBuffersARB?
- 20. Qt QHttp未定義的參考錯誤
- 21. QHTTP請求和響應調試
- 22. qt5佈局在Visual Studio 2015中不起作用?
- 23. Buildroot - 啓用Qt5 WebKit
- 24. QT5 Html5ApplicationViewer - C++調用?
- 25. QT5:不能部署Android應用
- 26. 適用於Android的Qt5:不兼容ABI
- 27. Qt5不會在Windows 8上編譯
- 28. Qt5 Beta - 找不到serviceframework.pro
- 29. Qt5 moc不生成文件
- 30. 我可以在capybara-webkit上使用自制軟件qt5嗎?
是的,你需要要麼使用QNetworkAccessManager(首選)或使用兼容性附加QtHttp它提供了QHTTP類,因爲它是在Qt4的。 – user2672165 2014-10-03 14:00:48
謝謝,但我不明白的是「怎麼做」。我只是一個學習者。 – Neokon 2014-10-03 14:02:43
這取決於你想要做什麼。您需要嘗試編碼,然後提交代碼以獲得幫助。 – user2672165 2014-10-03 14:14:57