2010-12-17 6 views
5

मैं वेबपृष्ठ के साथ-साथ अपने सभी संसाधनों को डाउनलोड करने के लिए QWebPage का उपयोग करता हूं। साथ ही मैं इस प्रक्रिया के दौरान क्यूटी द्वारा डाउनलोड किए जा रहे कच्चे डेटा को पकड़ना चाहता हूं। QNetworkReply से सिग्नल एक अच्छा समाधान नहीं है क्योंकि डेटा QWebPage द्वारा पहले से ही पढ़ा जा सकता था। इसका कारण यह हैक्यूनेटवर्क से डेटा कैसे पढ़ा जाए क्यूवेबेज द्वारा उपयोग किया जा रहा है?

QNetworkReply एक अनुक्रमिक अभिगम QIODevice, जिसका अर्थ है कि डेटा एक बार वस्तु से पढ़ी जाती है यह अब डिवाइस द्वारा रखा है।

QNetworkReply की detailed description के अनुसार

हालांकि QWebPage ओवरराइड createRequest विधि

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

के साथ कस्टम QNetworkAccessManager उपयोग करने के लिए विन्यस्त किया जा सकता मुझे लगता है कि सही समाधान QNetworkReply के लिए एक प्रॉक्सी बना सकते हैं और createRequest विधि में इसे वापस करने के लिए किया जाएगा। इस प्रॉक्सी को उत्तर से डेटा पढ़ने की अनुमति देनी चाहिए क्योंकि मूल QNetworkReply (QWebPage इसके साथ डेटा पढ़ सकता है) के साथ-साथ उसी समय प्रॉक्सी को QWebPage द्वारा पढ़े जाने के बाद अन्य ऑब्जेक्ट्स द्वारा डेटा पढ़ने की अनुमति देनी चाहिए। दूसरे शब्दों में हमें QNetworkReply के IODevice बेस क्लास के लिए tee की आवश्यकता है।

इस प्रॉक्सी को कैसे लिखें?

उत्तर

4

ऐसा लगता है कि कोई पहले से ही वही चाहता था और a proxy for the QNetworkReply लिखा था।

+0

हाय पियेटर, क्या आपको पता है कि प्रॉक्सी अभी भी कहीं उपलब्ध है या नहीं? लिंक टूटा हुआ प्रतीत होता है। – izyda

+1

@izyda ऐसा लगता है कि लिंक केवल temporarliy अनुपलब्ध है - * भंडार जल्द ही केवल पढ़ने के लिए उपलब्ध होगा, मूल क्लोन यूआरएल संरक्षित। * –

+0

समझ गया। एक तरफ ध्यान दें, क्या आपको लगता है कि subclassing QtNetworkResponse peek() का उपयोग करने से बेहतर विकल्प है? – izyda

संबंधित मुद्दे