문제

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;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top