2010-12-17 3 views
5

나는 QWebPage을 사용하여 웹 페이지와 모든 리소스를 다운로드합니다. 동시에이 과정에서 Qt가 다운로드하는 원시 데이터를 보류하고 싶습니다. void QNetworkAccessManager::finished(QNetworkReply * reply) 에서 QNetworkReply의 데이터를 읽음으로써 데이터를 읽는 것은 데이터가 이미 QWebPage에 의해 읽혀질 수 있으므로 좋은 해결책이 아닙니다.QWebPage에서 사용중인 QNetworkReply에서 데이터를 읽는 방법?

QNetworkReply 데이터 일단 개체로부터 판독되는 것을 의미 순차 액세스 QIODevice이 때문에 이것은 더 이상 는 장치에 의해 유지, 없다.

에 따라.

그러나 QWebPage

는 내가 적합한 솔루션이 QNetworkReply에 프록시를 작성하고 createRequest 방법에 반환하는 것입니다 생각 사용자 정의 QNetworkAccessManager 오버라이드 (override) createRequest 방법

QNetworkReply * QNetworkAccessManager::createRequest (Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0) 

와를 사용하도록 구성 할 수 있습니다. 이 프록시는 원래 QNetworkReply (즉, QWebPage이 데이터를 읽을 수 있음)의 응답에서 데이터를 읽을 수 있어야하지만 동시에이 프록시는 QWebPage으로 읽은 후에 다른 객체가 데이터를 읽을 수 있어야합니다. 즉 QNetworkReply의 기본 클래스에 tee이 필요합니다.

이 프록시 작성 방법은 무엇입니까?

답변

4

누군가 이미 같은 것을 원했고 a proxy for the QNetworkReply이라고 쓴 것처럼 보입니다.

+0

안녕 Piotr, 어딘가에 프록시를 사용할 수 있는지 알고 있습니까? 링크가 손상된 것 같습니다. – izyda

+1

@izyda 링크가 일시적으로 사용할 수없는 것처럼 보입니다. * 리포지토리는 곧 원본 복제 URL이 보존 된 상태로 읽기 전용 액세스로 제공됩니다. * –

+0

알립니다. 보조 노트에서 peek()을 사용하는 것보다 QtNetworkResponse를 서브 클래 싱하는 것이 더 나은 선택이라는 것을 알았습니까? – izyda

관련 문제