2012-08-13 2 views
0

이것은 내 첫 번째 게시물이며 Qt를 처음 접했습니다.QNetworkReply의 콘텐츠를 설정하는 방법

웹 페이지를로드하기 위해 Qwebkit을 사용하고 있으며 웹에서 일부 리소스를 완전히로드하지 않으려 고합니다. 구체적으로 말하면 jpg의 바이너리 데이터 (HTML 태그가 아님) 내에서 이미지 데이터가 아닌 jpg 파일의 크기 만 얻으려고합니다. 그렇게, 나는이 다음과 같이 할 수 QNAM의 createRequest 방법을 다시 구현 한 :

QNetworkReply *NetworkAccessManager::createRequest(Operation op,const QNetworkRequest & req,QIODevice * outgoingData) 
{ 


    if (req.url().path().endsWith("jpg")) 
    { 
     CustomReply *reply = new CustomReply(QNetworkAccessManager::createRequest(op, req, outgoingData)); 
     return reply->getQNR(); 
    }else{ 
     return QNetworkAccessManager::createRequest(op, req, outgoingData); 
    } 
} 

그럼 내가 QByteArray로 들어오는 데이터를 추가 내 CustomReply 클래스에서 일부 신호를 연결을 한 후 나는 QByteArray에 처리 내가 marker을 찾고 있는지 확인하십시오. 이제 여기서 어떻게 진행해야할지 모르겠다. 이 작업 후에 내가하고 싶은 것은 CustomReply :: getQNR()을 통해받은 데이터로 응답을 전달하고 연결을 종료하는 것입니다. 저장 한 QByteArray에 대한 회신 내용을 설정하는 함수를 구현해야하며 thisthat을 읽었지만 문제가 해결되지 않았습니다.

미리 감사드립니다.

+0

왜 이러한 링크가 도움이되지 않았는지 구체적으로 설명해 주실 수 있습니까? 그것은 원래 QNetworkReply (두 번째 링크의 답안에서 볼 수 있듯이)의 프록시처럼 보입니다. 기존 응답 오브젝트에 새 데이터를 넣을 수 없으므로 사용자 고유의 구현을 작성하여 createRequest()에서 리턴해야합니다. 연결을 종료하려면 QNetworkReply :: abort()를 호출하십시오. –

답변

0

나는 설명한대로 했으므로 here 내 문제가 해결되었습니다. 오프셋이 누락되어 readData()가 호출 될 때마다 데이터가 처음부터 읽혀졌습니다. 연결을 닫으려면 CustomReply의 종료 신호를 원래의 QNReply에 연결합니다. 데이터가 충분 해지면 연결을 종료하는 신호를 내 보냅니다. 중지 또는 닫기를 호출하면 오류 5가 발생합니다 (오류는 처리 할 수 ​​있지만 신호가 약간 쿨러로 작동 함).

감사합니다.

0

귀하의 질문에 100 % 명확하지 않지만 다른 QByteArray에받은 답장 값을 반환하려는 경우 추가 신호를 설정하거나 완료시 해고하거나 emit라고 부르면 통과됩니다. 그런 식으로 가치.

+0

QbyteArray에 저장 한 데이터로 새 QNreply를 만들고 싶습니다. – mrz

관련 문제