在Qt中,进行HTTP就行现在官方提倡使用QNetworkAccessManager,其和QNetworkRequest和QNetworkReply配合使用,来完成,其是只支持异步的操作。最近使用QML做些Android的小程序,需要进行HTTPS的操作,开始是使用的JS中的XMLHttpRequest,其不能使用HTTPS,我很郁闷,那只有使用C++来完成,但是又发现只支持异步,但是我希望在进行网络操作时,不要响应客户的响应,给我提示,那么如果是异步,那么请求本身就需要能够标识其操作,我想如果是同步该多好啊。
然后就有了下面的代码
const int TIMEOUT = ( * );
QString Supporter::httpsPostHelp(const QString &url, const QString &data)
{
QString _result;
QNetworkRequest _request;
_request.setUrl(QUrl(url));
QSslConfiguration _sslCon = _request.sslConfiguration();
_sslCon.setPeerVerifyMode(QSslSocket::VerifyNone);
_request.setSslConfiguration(_sslCon);
_request.setHeader(QNetworkRequest::ContentTypeHeader,
QString("application/x-www-form-urlencoded")); QNetworkReply *_reply = m_NtwkAccManager.post(_request, data.toLatin1());
_reply->ignoreSslErrors(); QTime _t;
_t.start(); bool _timeout = false; while (!_reply->isFinished()) {
QApplication::processEvents();
if (_t.elapsed() >= TIMEOUT) {
_timeout = true;
break;
}
} if (!_timeout && _reply->error() == QNetworkReply::NoError) {
_result = _reply->readAll();
} _reply->deleteLater(); return _result; }
http://blog.csdn.net/zhx6044/article/details/38373687