이미 동일한 질문이 있었다 null을 반환하지만 하나의 답변이 도움이되지 않습니다 : 그래서 Qt Download File - QNetworkAccessManager, not getting data데이터 검색 : 파일이 다운로드되어 있지만 QNetworkReply는 :: READALL는
, 나는 다운로드하려고 해요 파일 :
QNetworkRequest request;
request.setUrl(QUrl(fileUrl));
QNetworkReply * reply = m_nam.get(request);
connect(reply, SIGNAL(finished()), this, SLOT(onDownloadRequestFinished()), Qt::UniqueConnection);
connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(onDownloadRequestProgress(qint64, qint64)), Qt::UniqueConnection);
그리고 onDownloadRequestFinished
슬롯 :
QNetworkReply * reply = qobject_cast<QNetworkReply *>(sender());
if (reply && reply->error() == QNetworkReply::NoError) {
Q_ASSERT(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200);
qDebug() << "reply " << reply->bytesAvailable() << reply->pos() << reply->size() << reply->isReadable() << reply->openMode() << reply->isOpen();
}
슬롯은 다음 인쇄 : reply 0 0 0 true OpenMode("ReadOnly") true
데이터가 없습니다. 그러나 분명히 어딘가에서 다운로드를 볼 수 있습니다. 그것은 큰 파일이며, 그것을 다운로드, onDownloadRequestProgress
에서 판단.
중요한 설명 : 거의 동일한 코드가 동일한 컴퓨터의 다른 프로젝트에서 작동합니다. 나는 차이점을 찾으려고 노력하고 있지만, 지금까지 아무 것도 보지 못했습니다.
데이터는 어디에 있습니까?
는'reply-> 속성 (QNetworkRequest :: HttpStatusCodeAttribute) '값을 확인하시기 바랍니다
나는 항상 파일을 저장하려면이 옵션을했다. –@PavelStrakhov : 나는 또한 Q_ASSERT (reply-> attribute (QNetworkRequest :: HttpStatusCodeAttribute) .toInt() == 200);를 가지지 않는다. 그것을 포함하도록 코드를 업데이트하십시오. –
수신 한 데이터가 네트워크 스니퍼를 통해 보입니까? – peppe