问题:
使用https方式进行post 和get请求时,有时候会出现SSL handshake failed的问题,其实是调用Qt QNetworkAccessManager出现的问题。
其实SSL握手是建立HTTPS连接过程的第一步。为了验证和建立连接,用户的浏览器和网站的服务器必须经过一系列检查(握手),从而建立HTTPS连接参数。
分析:
QNetworkRequest::setSslConfiguration(const QSslConfiguration &configuration);
这个函数呢,可以设置SSL的配置,包括OpenSSL以及其它的SSL,函数默认设置是对服务器的安全证书进行验证的。
由于的网站证书有问题,既网页访问出现下列提示
从而无法导入证书,这个时候呢,无法通过验证。这个时候,默认的验证模式无法通过,从而服务端无法获得到客户端传入的数据。
解决:
在执行post与get方法之前进行以下配置
方案1
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::TlsV1);
config.setPeerVerifyMod