QNetworkAccessManager建立SSH连接时出现SslHandshakeFailedError

在使用QNetworkAccessManager通过HTTPS访问cgi程序时遇到SslHandshakeFailedError。通过对比IE访问的wireshark抓包,发现在设置QSslConfiguration的peerVerifyMode为QSslSocket::VerifyNone后,问题得到解决。默认模式为QSslSocket::AutoVerifyPeer,此模式根据socket的QSocket::SslMode选择合适的验证模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序需要通过HTTPS访问一个cgi程序,出现错误:QNetworkReply::SslHandshakeFailedError

wireshark抓取通过IE访问该页面和执行程序访问该页面的包,没有看到明显差异。但使用IE访问时,会提示certificationerror,需要选择继续访问才能访问该页面。

经过一番搜索和尝试,发现将QSslConfiguration中的peerverify mode设置为QSslSocket::VerfifyNone后问题解决。缺省mode为AutoVerifyPeer。QtAssistant上的描述是:

enum QSslSo

### 使用 QNetworkAccessManager 连接至 FileZilla FTP 服务器 为了通过 `QNetworkAccessManager` 访问位于 FileZilla 的资源,通常会采用 HTTP 或 HTTPS 协议而非直接的 FTP 协议来实现文件传输操作。下面展示了一个利用 Qt 提供的功能访问远程文件的例子[^1]。 #### 创建网络管理器实例并发起请求 ```cpp #include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QUrl> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 初始化网络访问管理者对象 QNetworkAccessManager manager; // 构建目标 URL (假设为公共可读路径) QString urlStr = "http://example.com/path/to/file"; // 需要替换为目标FTP服务器上的实际URL地址 QUrl url(urlStr); // 设置认证信息(如果需要) QByteArray userPass; userPass.append("username"); // 用户名 userPass.append(":"); userPass.append("password"); // 密码 url.setUserInfo(QString::fromLatin1(userPass)); // 发起 GET 请求获取数据 QNetworkReply* reply = manager.get(QNetworkRequest(url)); QObject::connect(reply, &QIODevice::readyRead, [&]() { qDebug() << "Data received:" << reply->readAll(); }); QObject::connect(reply, &QNetworkReply::finished, [&]() { qDebug() << "Finished!"; a.quit(); // 结束应用程序循环 }); } ``` 此代码片段展示了如何创建一个简单的客户端程序去连接到指定位置,并尝试下载该处的内容。需要注意的是,在真实场景下应当处理更多细节如错误情况、超设置以及更复杂的认证机制等[^2]。 对于特定于 FTP 方式的交互,则可能涉及到使用其他类比如 `QSslSocket` 来建立安全连接或者是调用命令行工具来进行更加底层的操作。然而,大多数情况下推荐尽可能地依赖更高层次的服务接口以简化开发流程和提高安全性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值