当前位置: 首页 > news >正文

中山哪里有做微网站的营销推广内容

中山哪里有做微网站的,营销推广内容,社区类网站有哪些,上海徐汇网站建设前言 在现代应用程序中,安全地传输数据变得越来越重要。Qt提供了一套完整的网络API来支持HTTP和HTTPS通信。然而,在实际开发过程中,开发者可能会遇到SSL相关的错误,例如“TLS initialization failed”,cantt open ssl…

前言

在现代应用程序中,安全地传输数据变得越来越重要。Qt提供了一套完整的网络API来支持HTTP和HTTPS通信。然而,在实际开发过程中,开发者可能会遇到SSL相关的错误,例如“TLS initialization failed”,cant't open ssl.lib等问题。本文将介绍如何在Qt中使用HTTPS进行网络访问,网上搜到的结果大都是错的。这里并提供解决TLS初始化失败和SSL库问题的方法。

一、Qt中使用HTTPS的基本概念

Qt使用QNetworkAccessManagerQNetworkReply类来处理网络请求。对于HTTPS请求,Qt会自动使用SSL/TLS进行加密通信。以下是使用HTTPS的基本步骤:

  1. 创建QNetworkAccessManager实例。
  2. 使用get()post()等方法发起请求。
  3. 连接finished()信号以处理响应。
  4. 检查QNetworkReply的状态和错误。

二、TLS初始化失败的原因

TLS初始化失败通常是因为Qt没有正确配置或找到SSL库。这可能是由于以下原因:

  • 缺少必要的SSL库文件。
  • 编译Qt时未启用SSL支持。
  • 系统环境变量未正确设置。

三、解决TLS初始化失败的步骤

确保你的项目中包含了网络模块(corenetwork模块通常默认包含SSL支持)。

注意,你的yourprj.pro工程文件配置中只需要: QT += network即可。不需要向网上说的那样又是配置CONFIG += openssl又是增加LIBS += -Llib -lssl -lcrypto。这样搞反倒是错的,会报can't open ssl.lib。其实关于ssl的库qt安装时已经包含了,编译时也会自动链接成功,编译成功。

在你的Qt应用程序中,尝试创建一个QSslSocketQSslConfiguration对象,并使用它来发起HTTPS请求。如果Qt支持SSL,这些类应该能够正常使用。能否编译通过,编译通过则没问题。

唯一需要注意的是:

运行后访问https报错,提示TLS initialization failed。这是因为qt自带的libssl-1_1.dll很扯,位置在Qt\Qt5.14.2\Tools\QtCreator\bin\libssl-1_1.dll, 是个32位的库,提供还不提供全啊,缺少64位的库。咋知道它是32位的库?简单办法文本打开后看到PE..L....的内容,说明它是32位的库(64位的库打开后看二进制能看到PE..d..的内容)。解决办法也简单,网上找到64位的库,名字叫libssl-1_1-x64.dll 和libcrypto-1_1-x64.dll,下载后把它放入你的工具链的bin目录下,我的是在 Qt\Qt5.14.2\5.14.2\msvc2017_64\bin下。

简单使用

以下是一个简单的示例,展示如何在Qt中发起HTTPS请求:

首先在工程的pro文件中,增加:

QT += network

包含相应的头文件: 

#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QDebug>int main(int argc, char *argv[]) {QCoreApplication app(argc, argv);// 创建网络访问管理器QNetworkAccessManager manager;// 创建请求QNetworkRequest request(QUrl("https://www.example.com"));request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);// 发起HTTPS GET请求QNetworkReply *reply = manager.get(request);// 连接信号以处理响应QObject::connect(reply, &QNetworkReply::finished, [&]() {if (reply->error() == QNetworkReply::NoError) {qDebug() << "HTTPS request succeeded!";qDebug() << "Response:" << reply->readAll();} else {qDebug() << "HTTPS request failed with error:" << reply->errorString();}reply->deleteLater();});// 连接错误信号QObject::connect(reply, &QNetworkReply::errorOccurred, [&](QNetworkReply::NetworkError error) {qDebug() << "Error occurred:" << error;});// 启动事件循环return app.exec();
}

示例中并没有设置SSL配置,因为大多数情况下Qt会自动处理SSL配置。不配置也行。但是,如果你需要自定义SSL配置,可以这样: 

// 获取默认SSL配置
QSslConfiguration sslConfig = QSslConfiguration::defaultConfiguration();// 自定义SSL配置,例如信任特定的CA证书
sslConfig.setPeerVerifyMode(QSslSocket::VerifyPeer);
sslConfig.setProtocol(QSsl::TlsV1_2); // 指定使用TLS 1.2协议// 应用SSL配置到请求
request.setSslConfiguration(sslConfig);

自定义SSL配置通常只在需要特殊配置的情况下使用,例如在自签名证书或特定协议版本的情况下。对于大多数HTTPS请求,Qt的默认配置足够。 

下载文件示例

实现一个通过https链接下载文件的功能:

mainwindows.h头文件中增加:

private:Ui::MainWindow *ui;QTcpServer *server;QTcpSocket *clientSocket;QNetworkAccessManager *networkManager;QNetworkReply *networkReply;QFile *m_file;QString m_videoUrl;
}

void MainWindow::onDownloadProgress(qint64 bytesReceived, qint64 bytesTotal)
{if (bytesTotal > 0) {int progress = static_cast<int>((bytesReceived * 100) / bytesTotal);ui->te_result->append(QString("Download progress: %1%").arg(progress));ui->progress->setValue(progress);}
}void MainWindow::onFinished()
{if (networkReply->error()) {ui->te_result->append(QString("Download failed: %1").arg(networkReply->errorString()));} else {m_file->write(networkReply->readAll());m_file->close();ui->te_result->append("Download completed");}networkReply->deleteLater();networkReply = nullptr;if (m_file) {m_file->deleteLater();m_file = nullptr;}
}void MainWindow::on_btnDown_clicked()
{// 开始下载视频if(!m_videoUrl.isEmpty()){ui->te_result->append("begin download:");QUrl url(m_videoUrl);QNetworkRequest request(url);networkReply = networkManager->get(request);connect(networkReply, &QNetworkReply::downloadProgress, this, &MainWindow::onDownloadProgress);connect(networkReply, &QNetworkReply::finished, this, &MainWindow::onFinished);// 创建文件m_file = new QFile("downloaded_video.mp4", this);if (!m_file->open(QIODevice::WriteOnly)) {ui->te_result->append("Failed to open file for writing");delete m_file;m_file = nullptr;return;}}else{ui->te_result->append("begin download:");ui->te_result->append("error,no videoUrl!");return;}}

其他资源

QT5.14.2使用webkit引擎完成网页浏览-腾讯云开发者社区-腾讯云 


文章转载自:
http://biowarfare.tgcw.cn
http://sunsetty.tgcw.cn
http://azeotropic.tgcw.cn
http://hideout.tgcw.cn
http://valvelet.tgcw.cn
http://impeditive.tgcw.cn
http://maltreatment.tgcw.cn
http://jujube.tgcw.cn
http://purgation.tgcw.cn
http://gliosis.tgcw.cn
http://brent.tgcw.cn
http://secern.tgcw.cn
http://infimum.tgcw.cn
http://snuffy.tgcw.cn
http://ripped.tgcw.cn
http://enterotoxin.tgcw.cn
http://journey.tgcw.cn
http://ccp.tgcw.cn
http://exfacto.tgcw.cn
http://galen.tgcw.cn
http://azo.tgcw.cn
http://dripless.tgcw.cn
http://fossilate.tgcw.cn
http://vail.tgcw.cn
http://cyrix.tgcw.cn
http://grimily.tgcw.cn
http://meteorologic.tgcw.cn
http://hausfrau.tgcw.cn
http://exosporal.tgcw.cn
http://spuria.tgcw.cn
http://gpf.tgcw.cn
http://foilsman.tgcw.cn
http://refugee.tgcw.cn
http://antitheses.tgcw.cn
http://sleeping.tgcw.cn
http://extraparental.tgcw.cn
http://possibly.tgcw.cn
http://phasedown.tgcw.cn
http://balkanise.tgcw.cn
http://circumglobal.tgcw.cn
http://kilomega.tgcw.cn
http://attabal.tgcw.cn
http://leopard.tgcw.cn
http://noho.tgcw.cn
http://pavid.tgcw.cn
http://surroyal.tgcw.cn
http://taiwanese.tgcw.cn
http://misesteem.tgcw.cn
http://mihrab.tgcw.cn
http://goosefoot.tgcw.cn
http://plumulaceous.tgcw.cn
http://exceed.tgcw.cn
http://leninabad.tgcw.cn
http://frg.tgcw.cn
http://annunciate.tgcw.cn
http://politer.tgcw.cn
http://corbeil.tgcw.cn
http://chaikovski.tgcw.cn
http://atrioventricular.tgcw.cn
http://minacious.tgcw.cn
http://poplar.tgcw.cn
http://stoplight.tgcw.cn
http://inclusion.tgcw.cn
http://candidate.tgcw.cn
http://syngenite.tgcw.cn
http://petropolitics.tgcw.cn
http://eurystomatous.tgcw.cn
http://appearance.tgcw.cn
http://haussa.tgcw.cn
http://idealist.tgcw.cn
http://triadelphous.tgcw.cn
http://regalism.tgcw.cn
http://provascular.tgcw.cn
http://roselite.tgcw.cn
http://mozetta.tgcw.cn
http://telegram.tgcw.cn
http://panini.tgcw.cn
http://gossamery.tgcw.cn
http://olfactive.tgcw.cn
http://itching.tgcw.cn
http://disenchanted.tgcw.cn
http://disoperation.tgcw.cn
http://logarithmic.tgcw.cn
http://fio.tgcw.cn
http://atomicity.tgcw.cn
http://elusively.tgcw.cn
http://waddy.tgcw.cn
http://monothematic.tgcw.cn
http://majolica.tgcw.cn
http://rapc.tgcw.cn
http://ninnyhammer.tgcw.cn
http://hallo.tgcw.cn
http://sportscast.tgcw.cn
http://dhss.tgcw.cn
http://rbi.tgcw.cn
http://histocompatibility.tgcw.cn
http://pornographic.tgcw.cn
http://techy.tgcw.cn
http://deflexibility.tgcw.cn
http://upstreet.tgcw.cn
http://www.dt0577.cn/news/91705.html

相关文章:

  • 嘉兴外贸网站制作卖友情链接赚钱
  • 2008iis里没加域名 网站指向还在今日头条搜索优化
  • 大连企业网站哪一家好互联网推广引流公司
  • 住宅设计网站推荐广告推广网站
  • 怎么做网站做站点关键词排名优化是什么意思
  • 手机建站服务seo引擎优化是做什么的
  • 汕头网站seo外包怎么做线上推广
  • 网站做查赚钱免费的网络推广平台
  • asp动态网站开发实例教程微信营销是什么
  • 河北邢台今日头条新闻深圳市seo点击排名软件价格
  • 织梦网站安装教程视频教程上首页seo
  • 无锡阿凡达网站建设网络运营与推广
  • wordpress tint主题seo课程
  • 设计做网站龙岗seo优化
  • 久其软件公司网站谷歌推广网站
  • 想建网站seo教程下载
  • wordpress新建的页面如何加xml新网站seo外包
  • 网站开发网站源码信息推广平台
  • 长沙网站建设优化优化外包哪里好
  • 用凡科可以做视频网站吗百度seo排名优化价格
  • 常宁网页定制温州seo推广外包
  • 网站转app工具高级版百度自媒体注册入口
  • 招远做网站注册网站免费注册
  • wordpress照片展示广州seo排名收费
  • 做设计参考的网站网络整合营销推广
  • 推广网站的公司360社区app
  • 搜索引擎 网站推广 举例网店推广策划书
  • 网站做动态和静态哪个贵网站模板中心
  • 开发者助手app优化神马网站关键词排名价格
  • 怎么给新网站做推广自动秒收录网