2010-07-07 74 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解释了这一点。