2013-05-06 49 views

回答

4

使用QNetworkAccessManager,QNetworkRequest和QNetworkReply类进行HTTP连接。

QNetworkAccessManager* netManager = new QNetworkAccessManager(); 
QUrl myurl(yourURL); 
QNetworkRequest req(url); 

QNetworkReply* ipReply = netManager->get(req); 
connect(ipReply, SIGNAL(finished(QNetworkReply*)), this, SLOT(onReply(QNetworkReply*))); 
} 

在onReply插槽解析您回应

if (reply) { 
    if (reply->error() == QNetworkReply::NoError) { 
     int available = reply->bytesAvailable(); 
     if (available > 0) { 
      int bufSize = sizeof(char) * available + sizeof(char); 
      QByteArray buffer(bufSize, 0); 
      int read = reply->read(buffer.data(), available); 
      response = QString(buffer); 
     } 
    } else { 
     response = 
       QString("Error: ") + reply->errorString() 
         + QString(" status:") 
         + reply->attribute(
           QNetworkRequest::HttpStatusCodeAttribute).toString(); 
    } 
    reply->deleteLater(); 
} 

访问this page以获取更多信息

1

使用此代码...

QNetworkAccessManager* netManager = new QNetworkAccessManager(); 
     QUrl myurl("http://******"); 
     QNetworkRequest req(myurl); 

    QNetworkReply* ipReply = netManager->get(req); 

    QEventLoop eventLoop; 
    QObject::connect(ipReply, SIGNAL(finished()), &eventLoop, SLOT(quit())); 
    eventLoop.exec(); 
    std::cout << "finished" << std::endl; //request finished here 
    requestFinished(ipReply);