使用Qt QNetworkAccessManager发送HTTP头信息

5
我有以下代码,我想在调用时添加一些HTTP头信息。 有什么方法可以做到这一点吗?
void NeoAPI::call(QString apiCall) {
    if (this->ApiCall.contains(apiCall)) {
        QNetworkAccessManager* manager = new QNetworkAccessManager(0);
        connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(netReplyFinished(QNetworkReply*)));
        QUrl url = this->ApiCall[apiCall];
        url.addQueryItem("memberid","76710"); // Set for backdoor debugging
        manager->get(QNetworkRequest(url));
    } else {
        this->requestResultText = QString("Call %1 doesn't exist").arg(apiCall);
    }
}

void NeoAPI::netReplyFinished(QNetworkReply *netReply) {
    if (netReply->error() == QNetworkReply::NoError) {
        this->requestResultText = netReply->readAll();
    } else {
        this->requestResultText = "API Call Failed";
    }
    QMessageBox messageBox;
    messageBox.setText(this->requestResultText);
    messageBox.exec();
    //delete netReply;
}

另外,如果我不是在类中使用它们,那么 connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(netReplyFinished(QNetworkReply*))); 中的 this 是什么?

谢谢!

1个回答

11

是的,查看QNetworkRequest的文档。

您需要执行类似以下操作:

QNetworkRequest request(url);
request.setHeader( QNetworkRequest::ContentTypeHeader, "some/type" );
request.setRawHeader("Last-Modified", "Sun, 06 Nov 1994 08:49:37 GMT");
manager->get( header );

另外,如果我不是在类内使用这些东西,那么在connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(netReplyFinished(QNetworkReply*)));中的this是什么?

它将是空的。要连接信号到槽,该槽必须是某个对象的成员函数。Qt关于信号和槽的入门解释了这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接