2011-10-02 57 views
3

我在使用QNetworkAccessManager類的對象時遇到問題。 我想發送POST請求到Web服務器。 我的代碼是通過QNetworkAccessManager的發佈請求

QNetworkAccessManager *manager; 
    manager = new QNetworkAccessManager(); 
    QNetworkRequest req; 
    req.setUrl(QUrl("http://example.com")); 
    //Configure the parameters for the post request: 
    QByteArray postData; 
    postData.append("Login=log_name&"); 
    postData.append("Password=some_pass"); 
    //Now create a QCookieJar: 
    manager->setCookieJar(new QNetworkCookieJar(manager)); 
    //Define the Request-url: 
    connect (manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinish (QNetworkReply *))); 
    //Send the request: 
    manager->post(req, postData); 

使用的插槽代碼:

void MainWindow::replyFinish(QNetworkReply *reply) 
    { 
    QString answer = QString::fromUtf8(reply->readAll()); 
    qDebug() << answer; 
    } 

的問題是,答案是一個空字符串,但我相信它應該是一些HTML代碼描述 接受或拒絕授權。

謝謝你的幫助。

回答

2

大多數網站使用HTTP重定向登錄請求後(或填充形式之後)。您需要在同一個插槽中測試錯誤。

您可以處理類似於that code東西重定向(和錯誤)。

由於QNetworkAccessManager已經創建了自己的基地QNetworkCookieJar對象,如果您沒有編寫派生類或者如果您不與其他經理共享cookie罐,則不需要實例化一個對象。但是您需要使用相同的管理器(或同一個cookie jar)以便後續請求能夠在登錄期間重用服務器設置的cookie。

相關問題