【问题标题】:sample ssl implementation in QNetworlAcessManagerQNetworlAcessManager 中的示例 ssl 实现
【发布时间】:2016-05-17 17:18:44
【问题描述】:

有没有使用OpenSSL 显示QNetworkAccessManager 的示例?代码sn-p还是文章链接?

【问题讨论】:

  • 欢迎来到 SO!在提出问题之前,请先进行一些基础研究(谷歌搜索,搜索以前的答案)。如果您已经这样做了,至少通过链接到以前看起来相似但没有帮助的问题等方式让我们知道。您的问题越窄越好。
  • 嗨,我进行了谷歌搜索,但没有找到适合我的示例。原因可能是我不清楚如何在 Qt 中链接 openssl 并在 QNetworkAccessMAnager 中使用通用 ssl。并感谢提供的链接。我希望它能对我有所帮助。

标签: qt openssl


【解决方案1】:

有没有使用 OpenSSL 显示 QNetworkAccessManager 的示例?这 代码sn-p或文章链接?

这个问题的答案分为两部分:

1) 一般使用 SSL

2) 将基于 Qt 的程序与 OpenSSL 链接

第一个问题的答案可以是这个video。在 stackoverflow 上有很多答案,只是没有提到 QNetworkAccessManager 的视频那么系统。另外,我喜欢这个帖子:QNetworkRequest and default SSL configuration。确保使用QNetworkAccessManagerpostget 方法发送请求。

第二个问题的答案可以是:How to Include OpenSSL in a Qt project

我通常会这样做:

// 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> &)));

通过插槽void MyClass::requestFinished(QNetworkReply*)接收数据。处理 SSL 错误至关重要,最常见的错误是客户端系统上缺少/错误的证书。当然,以上所有内容不一定都在一个函数中,而是代表与流程相关的函数的sn-ps。

【讨论】:

  • 嗨,Alexander,感谢您提供视频链接。它帮助了我很多,还有你给出的示例代码。我会尝试在我的程序中实现它并让你知道。
猜你喜欢
  • 2014-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 2016-08-23
相关资源
最近更新 更多