2010-07-07 6 views
4

У меня есть следующий код, и я хотел бы добавить некоторую информацию заголовка HTTP вместе с вызовом. В любом случае, я могу это сделать?Отправка информации заголовка HTTP с Qt 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; 
} 

Кроме того, если бы я не использовал их в классе, что бы this в connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(netReplyFinished(QNetworkReply*))); быть?

Спасибо!

ответ

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 *)), это, SLOT (netReplyFinished (QNetworkReply *))); be?

Это не будет ничего. Чтобы подключить сигнал к слоту, этот слот должен быть функцией-членом какого-либо объекта. Это объясняет Qt primer on signals and slots.

Смежные вопросы