pManager = new QNetworkAccessManager(this);
QNetworkRequest req;
QSslConfiguration config;
QByteArray content = "username=root@cve&password=111111";
int contentLength = content.length();
// config.setPeerVerifyMode(QSslSocket::VerifyNone);
//config.setProtocol(QSsl::TlsV1SslV3);
config = QSslConfiguration::defaultConfiguration();
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1_2);
req.setSslConfiguration(config);
req.setUrl(QUrl("https://192.168.7.11:8006/api2/json/access/ticket"));
req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
req.setHeader(QNetworkRequest::ContentLengthHeader,contentLength);
QNetworkReply *pReply = pManager->post(req, content);
QByteArray encodedString = pReply->readAll();
qDebug()<<QString(encodedString)<<"fan"<<endl;
ui->textBrowser->append(encodedString);
返回值QNetworkReply *pReply为什么是空的,错在什么地方,请大神指点
QNetworkAccessManager的所有的HTTP相关操作均为异步(Post、Get、Put和DeleteResource(对应DELETE)),在进箱操作获得reply之后,需要等待其发射finish或者error信号来判断是否结束。另一个坑是:QNetworkReply不具有超时判定的能力,也就是说需要手动写一个QTimer一类的东西进行超时判断。如果不想单独写一个函数进行操作,且无视掉错误的话,可以使用一个QEventLoop,将reply的信号连接到其quit槽上然后exec即可。
写个槽函数,对应pManager的finished(QNetWorkReply *)信号,在槽函数里readAll()就可以了。
异步函数,那时候你readAll()的时候可能还没有完成呢