我在Qt4中创建了一个使用QHttp类的应用程序。新的Qt 5在QNetworkAccessManager类中具有几乎相同的功能,但我需要进行一些调整:
-
我的代码是:
http=new QHttp ( this ); if ( config->brokerurl.indexOf ( "https://" ) ==0 ) neworkAccess-> http->setHost ( lurl.host(),QHttp::ConnectionModeHttps, lurl.port ( 443 ) ); else http->setHost ( lurl.host(),QHttp::ConnectionModeHttp, lurl.port ( 80 ) );
我已经找到了使用URL地址发布消息的QNetworkRequest类,但我使用的是在不同端口中工作的http和https,所以我还需要设置此ConnectionMode(http或https)。
有没有办法在QNetworkRequest中设置ConnectionMode?
-
我有一段代码:
http->post ( lurl.path(),req.toUtf8(),&httpSessionAnswer );
Qt 4中的签名:
int post ( const QString & path, const QByteArray & data, QIODevice * to = 0 )<br><br>
在Qt 5中,我们有:
QNetworkReply * post ( const QNetworkRequest & request, QIODevice * data ) QNetworkReply * post ( const QNetworkRequest & request, const QByteArray & data )
新的Qt 5等效于发布消息(请求+数据)和获得答案(
QIODevice * data
)吗?
您可以在QUrl()中设置端口。类似(极其简化):
QNetworkAcessManager http;
QUrl url;
url.setHost("xxx.xxx.xxx.xxx");
url.setPort(xxxx);
QNetworkRequest req(url);
http.post(req,....);
对于sslErrors:
您可以在QNetworkReply中找到信号。你可以做:
connect(&http,SIGNAL(finished(QNetworkReply *)),
this,SLOT(finishedSlt(QNetworkReply *)));
在您的插槽中:
finishedSlt(QNetworkReply *reply){
connect(reply,SIGNAL(sslErrors(const QList<QSslError> &)),
SLOT(sslErrorsSlt(QList<QSslError> &)));
}
免责声明:此代码只是一个示例,不打算复制/粘贴到生产系统中。