0

QNetworkAccessmanager を使用して localhost/conductor/api/provider_accounts.xml にリクエストを送信しようとしましたが、ブラウザで開くと適切な出力が得られますが、QNetworkAccessmanager で同じことをすると何も得られません。まったく。これが私のコードです

  void ServiceProvider::replyFinished(QNetworkReply * reply)
 {
 qDebug()<<reply->readAll();
 QString data=(QString)reply->readAll();
 qDebug()<<data;
 QXmlStreamReader xml(data);
 QXmlStreamAttributes attrib;
    while(!xml.atEnd()){
        xml.readNextStartElement();
        if(xml.name()=="name" && !xml.isEndElement()){
            attrib=xml.attributes();
            QString name=attrib.value("name").toString();
            qDebug()<<name;
            }
    }
}

void ServiceProvider::pushImage()
{
manager = new QNetworkAccessManager(this);
manager->get(QNetworkRequest(QUrl("https://localhost/conductor   
/api/provider_accounts.xml")));
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
}
4

1 に答える 1

0

返信を 2 回読むことはできません。

qDebug()<<reply->readAll();
QString data=(QString)reply->readAll();

上記のqDebug()行はすべてのデータを消費します。readAll()を返すため、2 番目の呼び出しも正しくありませんQByteArray。上記のように単純にキャストしてQString、それが機能することを期待することはできません。返信のエンコーディングを確認し、 などの適切な変換関数を使用する必要がありますQString::fromUtf8(reply->readAll())

于 2012-06-16T15:10:45.260 に答える