用QNetworkAccessManager以POST方式访问https
需要用户认证,所以用SIGNAL(authenticationRequired(QNetworkReply *, QAuthenticator *))
manager = new QNetworkAccessManager(this); connect(manager,SIGNAL(authenticationRequired(QNetworkReply *, QAuthenticator *)),
this, SLOT(onAuthenticationRequest(QNetworkReply *, QAuthenticator *)));
以POST访问
QByteArray postdata;
reply = manager->post(QNetworkRequest(url), postdata);
却不会运行SLOT(onAuthenticationRequest(QNetworkReply *, QAuthenticator *))
怎么也查不出原因
用wget https://xxx.xxxxx.xxx/xxxx --no-check-certificate --post-data="" --user=username --password=pass
可以正确获取
-----------------------------------------------------------------------------
加上 #ifndef QT_NO_SSL connect(manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)), this, SLOT(sslErrors(QNetworkReply*,QList<QSslError>))); #endif #ifndef QT_NO_SSL void MainWindow::sslErrors(QNetworkReply *reply,const QList<QSslError> &) { reply->ignoreSslErrors(); } #endif 解决问题
刚想说,发现你自己解决了,反正就是因为qt自己没有**验证的功能,会出现ssl的错误,也可以自己带**来完成验证
http://www.qter.org/forum.php?mod=viewthread&tid=5762&extra=page%3D1