报错内容
qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
Error: "TLS initialization failed"
问题原因
Openssl库不匹配或者未安装,可以通过qdebug版本打印当前所需要的的openssl库,自己去官网下载
qDebug()<< QSslSocket::sslLibraryBuildVersionString();
解决方案
由于目前主流的get请求都是https所以导致会出现这个问题,直接改为http请求即可,在QT中强制使用http请求不要用https即可解决问题,相关代码如下。
void WeatherFetcher:: fetchWeather() {QNetworkAccessManager *manager = new QNetworkAccessManager(this);// 创建请求对象QNetworkRequest request;request.setUrl(QUrl(m_url)); // 设置 URL// 配置 SSLQSslConfiguration sslConfig = request.sslConfiguration();sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone);request.setSslConfiguration(sslConfig);// 发送请求QNetworkReply *reply = manager->get(request);connect(reply, &QNetworkReply::finished, this, [this, reply]() {if (reply->error() == QNetworkReply::NoError) {QByteArray response = reply->readAll();parseWeatherData(response);} else {qDebug() << "Error:" << reply->errorString();}reply->deleteLater();});
}