2010-07-07 73 views
4

我有以下代碼,我想添加一些HTTP頭信息以及調用。無論如何,我可以做到這一點?用Qt發送HTTP頭信息QNetworkAccessManager

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是什麼?

謝謝!

回答

7

是的,請參閱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); 

而且,如果我不使用這些部件的 類的內部,你會在 的這種連接(經理, SIGNAL( (QNetworkReply *)), this, SLOT(netReplyFinished(QNetworkReply *))); 是?

它不會是任何東西。要將信號連接到插槽,該插槽必須是某個對象的成員函數。 Qt primer on signals and slots解釋了這一點。