gpt4 book ai didi

c++ - Qt 如何使用 SSL 发送 HTTPS 后

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:36 27 4
gpt4 key购买 nike

Qt 如何使用 SSL 发送简单的 HTTPS 帖子?
该程序应该使用 QNetworkAccessManager 通过 HTTPS 发送帖子。
下面是我的代码的一个简单示例。

QUrlQuery params;
QByteArray dane;
params.addQueryItem("mWyslijpost", ui->lineEdit->text());
dane.append(params.toString());


QUrl url("https://81.2.244.83/Testpostssl/infotest.php");


QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
QNetworkReply *reply = manager->post(request, dane);



QFile certFile(":/crt/cert.crt");
Q_ASSERT(certFile.open(QIODevice::ReadOnly));

QSslCertificate cert(&certFile, QSsl::Pem);

QSslSocket * sslSocket = new QSslSocket(this);
sslSocket->addCaCertificate(cert);

sslSocket->connectToHostEncrypted(SERVER, 443);

if (!sslSocket->waitForEncrypted())
{
qDebug() << "Info " << sslSocket->errorString();
return false;
}

QSslConfiguration config = sslSocket->sslConfiguration();
config.setProtocol(QSsl::TlsV1_2);

sslSocket->setSslConfiguration(config);
reply->setSslConfiguration(config);


// wait
QEventLoop elCzekaj;
connect(reply, SIGNAL(finished()), &elCzekaj, SLOT(quit()));
elCzekaj.exec();


if(reply->error() == QNetworkReply::NoError)
{
qDebug() << reply->readAll();
}
else
{
qDebug() << "Error...";
qDebug() << reply->errorString();
}

如何从服务器下载证书?如何配置QSsl?

最佳答案

要从对等方获取证书,请尝试这样的操作:

QSslSocket *socket = new QSslSocket();

QObject::connect(socket,
&QSslSocket::encrypted,
[=](){qDebug() << socket->peerCertificate() << " cert";}
);

socket->connectToHostEncrypted("stackoverflow.com", 443);

关于问题:“如何配置QSsl”,这取决于你想做什么。如果您只是想通过 TLS 从 Web 服务器获取某些内容,只需使用 QNetworkAccessManager。那里的默认值就可以了。

关于c++ - Qt 如何使用 SSL 发送 HTTPS 后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44328916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com