QNetworkAccessManager/QNetworkRequest/QNetworkReply使用记录

原本在Qt4版本中存在几个和Http直接相关的类,可以进行简单的使用,但在Qt5版本后,这几个类被取消,现在采用QNetworkAccessManager/QNetworkRequest/QNetworkReply来实现数据的请求。

参照说明文档,按部就班编写代码后,发现在请求发送成功后,但在接收时总会产生SslHandshakeFailedError错误,遂修改代码增加QSslConfiguration的配置:

QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::AnyProtocol);

QNetworkRequest request(QUrl(s));//定义请求
request.setSslConfiguration(config);//配置协议

QNetworkReply *reply = networkManager.get(request);

connect(reply, SIGNAL(readyRead()), this, SLOT(readyRead()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
             this, SLOT(slotError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(sslErrors(QList<QSslError>)),
             this, SLOT(slotSslErrors(QList<QSslError>)));


如此之后,错误不再产生,可以正常接收数据:

void Dialog::readyRead()
{
    QNetworkReply *reply = reinterpret_cast<QNetworkReply *>(this->sender());
    if(NULL != reply)
        qDebug() << U2G(reply->readAll());
}

需要注意的是:

根据文档中的说明,用户需要自己释放QNetworkReply的资源,但不能直接delete,而是要使用deleteLayer的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值