是否有使用QNetworkAccessManager
显示OpenSSL
的示例?代码段或文章的链接?
答案 0 :(得分:0)
是否有任何使用OpenSSL显示QNetworkAccessManager的示例?该 代码段或文章链接?
这个问题的答案分为两部分:
1)一般使用SSL
2)将基于Qt的程序与OpenSSL链接
第一个问题的答案可以是video。 stackoverflow上有很多答案,就像那个提及QNetworkAccessManager
的视频一样不那么系统。另外,我喜欢这个帖子:QNetworkRequest and default SSL configuration。请务必使用post
的{{1}}或get
方法发送请求。
第二个问题的答案可以是:How to Include OpenSSL in a Qt project。
我通常会这样做:
QNetworkAccessManager
数据通过插槽// connect 'finished' signal with consumer
connect(&m_networkAccessManager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(requestFinished(QNetworkReply*)));
// prepare request and that URL starts with https://
QNetworkRequest rqst(QUrl(jsonUser->url()));
QByteArray postData = myJsonDocument().toJson(QJsonDocument::Compact);
rqst.setRawHeader("Content-Type", "application/json");
auto strSize = QByteArray().append(QString::number(postData.size()));
rqst.setRawHeader("Content-Length", strSize);
// send the request out using HTTPS Post
QNetworkReply* pNetworkReply = m_networkAccessManager.post(rqst, postData);
// connect 'SSL errors' signal with consumer
connect(pNetworkReply, SIGNAL(sslErrors(const QList<QSslError> &)),
this, SLOT(onSSLError(const QList<QSslError> &)));
接收。处理SSL错误非常重要,最常见的是关于客户端系统上的缺失/错误证书。当然,以上所有内容不一定是一个函数,而是代表与流程相关的函数的片段。