简体   繁体   English

如何在 QT 中将 SSL 证书添加到我的代码中

[英]How can i add a SSL Cert to my code in QT

What I'm trying to do is send a https request to https://mapi.alipay.com/gateway.do ?我想要做的是向https://mapi.alipay.com/gateway.do发送 https 请求? in QT and get a response.在 QT 中并得到响应。 Whenever I send the request I get the error below.每当我发送请求时,我都会收到以下错误。

qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error Failure "Error creating SSL context ()" qt.network.ssl: QSslSocket: 无法调用未解析的函数 SSLv23_client_method qt.network.ssl: QSslSocket: 无法调用未解析的函数 SSL_CTX_new qt.network.ssl: QSslSocket: 无法调用未解析的函数 SSL_library_init qt. callnetwork.slresolved: 无法调用函数 ERR_get_error qt.network.ssl:QSslSocket:无法调用未解决的函数 ERR_get_error 失败“创建 SSL 上下文时出错()”

I was told I need a SSL cert so I used有人告诉我我需要 SSL 证书,所以我使用了

openssl s_client -connect mapi.alipay.com:443 -showcerts 

To get the cert.拿到证书。 But when ever但每当

How can I add a SSL Cert to my project code in QT?如何在 QT 中将 SSL 证书添加到我的项目代码中?

    #include <QCoreApplication>
    #include <QDebug>
    #include <QNetworkAccessManager>
    #include <QNetworkRequest>
    #include <QNetworkReply>
    #include <QUrl>
    #include <QUrlQuery>
    #include <QFile>
    #include <QSslSocket>

    void sendRequest();

    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        sendRequest();
        return a.exec();
    }
    void sendRequest(){



    // create custom temporary event loop on stack
    QEventLoop eventLoop;

    // "quit()" the event-loop, when the network request "finished()"
    QNetworkAccessManager mgr;
    QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));

    // the HTTP request
    QNetworkRequest req( QUrl( QString("https://mapi.alipay.com/gateway.do/_input_charset=UTF-8&currency=USD&notify_url=10.237.221.84:80&out_trade_no=123456789&partner=2088101122136241&sign=760bdzec6y9goq7ctyx96ezkz78287de&subject=Coke&sign_type=MD5&service=create_forex_trade&total_fee=0.01") ) );
    QNetworkReply *reply = mgr.get(req);
    eventLoop.exec(); // blocks stack until "finished()" has been called

    if (reply->error() == QNetworkReply::NoError) {
        //success
        qDebug() << "Success" <<reply->readAll();
        delete reply;
    }
    else {
        //failure
        qDebug() << "Failure" <<reply->errorString();
        delete reply;
    }
}

To add additional SSL certificates to your Qt program, you can use:要将其他 SSL 证书添加到 Qt 程序,您可以使用:

QSslSocket::addDefaultCaCertificates("example.pem");

However, I don't think that solves any of your errors.但是,我认为这不能解决您的任何错误。 The errors in your question are not related to a missing SSL certificate, but to missing SSL functions.您问题中的错误与缺少 SSL 证书无关,而是与缺少 SSL 功能有关。 You are probably using an outdated SSL library?您可能使用的是过时的 SSL 库? (eg older or incompatible versions of libeay32.dll and ssleay32.dll on Windows?) (例如,Windows 上较旧或不兼容的 libeay32.dll 和 ssleay32.dll 版本?)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM