2015-10-13 17 views
6

मैं OkHTTP लाइब्रेरी का उपयोग कर HTTP request की प्रतिक्रिया हेडर की जाँच करने की जरूरत है। डेटा लोड करने से पहले मुझे इसे अंतिम अपडेट समय की जांच करनी होगी। उस समस्या में प्रतिक्रिया प्रतिक्रिया 2 MB है इसलिए मुझे केवल Last-Modified शीर्षलेख प्राप्त करने की आवश्यकता है। क्या प्रोग्राम के रीस्टफुल एक्शन की गति बढ़ाने के लिए प्रतिक्रिया निकाय के बिना केवल प्रतिक्रिया शीर्षलेख लोड करना संभव है?प्रतिक्रिया हेडर OkHttp

उत्तर

10

आप एक HTTP HEAD अनुरोध जो केवल हेडर को पुन: प्राप्त भेज सकते हैं। आपको केवल यह जांचना होगा कि आपका सर्वर एप्लिकेशन HEAD अनुरोधों का समर्थन करता है या नहीं।

प्रमुख विधि सिवाय इसके कि सर्वर नहीं जवाब में संदेश-शरीर लौटना चाहिए पाने के लिए समान है। metainformation एक HEAD अनुरोध के जवाब में HTTP शीर्ष लेखों में निहित समान GET अनुरोध के जवाब में भेजी गई जानकारी होना चाहिए। इस विधि इकाई-शरीर में ही स्थानांतरित किए बिना अनुरोध से गर्भित संस्था के बारे में metainformation प्राप्त करने के लिए इस्तेमाल किया जा सकता। यह विधि अक्सर वैधता, अभिगम्यता, और हालिया संशोधन के लिए हाइपरटेक्स्ट लिंक का परीक्षण करने के लिए उपयोग की जाती है। OkHttp के लिए
(http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)

उदाहरण:

String url = ... 
Request request = new Request.Builder().url(url).head().build(); 
+0

आप मैं कैसे कर सकते हैं कि OkHttp साथ का एक उदाहरण लिख सकते हैं? मुझे javadoc विधियों में यह नहीं मिल रहा है जो इसे संचालित करता है (( – Near1999

+0

@ 1 999 के पास मैंने अपने जवाब में जावाडोक लिंक को सही किया। अब यह 'Request.Bilder' में 'head()' विधि को इंगित करता है। क्या इससे मदद मिलती है? – wero

+0

I पता है कि अनुरोध कैसे बनाया जाए, मुझे नहीं पता कि ** हेड अनुरोध ** कैसे बनाया जाए, और जावाडोक ने मेरी कोई मदद नहीं की है (मुझे पता है कि अनुरोध में शीर्षलेख जोड़ने और उन्हें प्रतिक्रिया पर कैसे प्राप्त किया जाए, लेकिन मैं नहीं ' टी सर्वर से शरीर डाउनलोड किए बिना केवल हेडर प्राप्त करने के बारे में पता है। अगर आपको पता है कि कृपया कोड कोड कैसे पोस्ट करें। – Near1999

4

प्रतिक्रिया शरीर स्ट्रीम किया गया है, तो आप नियमित रूप से अनुरोध कर सकते हैं शीर्ष लेख कैसे पढ़ें, और फिर या नहीं, शरीर का उपभोग करने का फैसला। यदि आप शरीर नहीं चाहते हैं, तो आप बिना किसी अपशिष्ट के close() कर सकते हैं।

सर्वर के लिए एक मामूली लागत एक प्रतिक्रिया छोड़ दिया जा सकता है कि सेवा करने के लिए नहीं है। लेकिन कुल लागत HEAD बनाने के बाद और फिर GET अनुरोध करने से कम होगी, जब तक कि आप अनुरोधों का एक महत्वपूर्ण अंश (कहें> 9 0%) छोड़ने की अपेक्षा न करें।

+0

तो, जब मैं ** respond.body() ** को कॉल करता हूं अनुरोध केवल डाउनलोड करना शुरू होता है? – Near1999

+0

_Almost_। इससे पहले यह पहले कुछ कीबी डाउनलोड करेगा, लेकिन जब तक आप 'response.body() 'को कॉल नहीं करते हैं, तब तक यह बहुत अधिक डाउनलोड नहीं होगा। –

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