문제
qnetworkaccessmanager :: get를 사용하여 파일을 다운로드하고 있지만 qhttp :: 다른 qiodevice에 대한 응답을 직접 작성하는 내장 방법이 없습니다.
가장 쉬운 방법은 다음과 같은 일을하는 것입니다.
QIODevice* device;
QNetworkReply* reply = manager.get(url);
connect(reply, SIGNAL(readyRead()), this, SLOT(newData()));
그리고 NewData 슬롯에서 :
device->write(reply->readAll());
그러나 이것이 올바른 방법인지 확실하지 않습니다. 아마도 뭔가를 놓쳤을 것입니다.
해결책
맞습니다. 나는 하위 수준의 형태를 사용할 것입니다 read()
그리고 write()
, QByteArray
오류 처리를 올바르게 지원하지는 않지만 그 외에는 괜찮아 보입니다.
당신은 그것에 문제가 있습니까?
다른 팁
완성 된 신호를 사용하여 다운로드 프로세스가 끝날 때 모든 내용을 읽으십시오. 예제 (이벤트 루프를 제거하고 새 슬롯을 사용하여 비동기식으로 만들었습니다) :
QNetworkAccessManager manager;
QEventLoop loop;
QNetworkReply *reply = manager.get( request );
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
QFile file( "YOUR FILE" );
file.open(QIODevice::WriteOnly);
file.write(reply->readAll());
delete reply;
제휴하지 않습니다 StackOverflow