क्या पुस्तकालय अपाचे कॉमन्स HttpClient समर्थन Gzip है? हम क्लाइंट/सर्वर संचार को तेज करने के लिए हमारे अपाचे सर्वर पर सक्षम gzip संपीड़न का उपयोग करना चाहते थे (हमारे पास एक PHP पृष्ठ है जो हमारे एंड्रॉइड एप्लिकेशन को सर्वर के साथ फ़ाइलों को सिंक करने की अनुमति देता है)।क्या Apache Commons HttpClient समर्थन GZIP है?
उत्तर
अपाचे एचटीपी क्लाइंट 4.1 बॉक्स के बाहर सामग्री संपीड़न को कई अन्य सुविधाओं के साथ समर्थन देता है जिन्हें पहले स्कोप से बाहर माना जाता था।
इस आउट ऑफ़ द बॉक्स के लिए इसका कोई समर्थन नहीं है, और ऐसा लगता है कि यह HttpClient 3.x में जोड़ा जाने की संभावना नहीं है (बल्कि जिची मुद्दे here देखें)। हालांकि, आप कस्टम लाइब्रेरी के शीर्ष पर स्तरित कस्टम अनुरोध पाठकों और मैन्युअल अनुरोध/प्रतिक्रिया स्ट्रीम हैंडलिंग जोड़कर ऐसा कर सकते हैं, लेकिन यह स्पष्ट रूप से है।
ऐसा लगता है कि आप इसे HttpClient 4 के साथ कर सकते हैं, लेकिन कुछ प्रयास किए बिना नहीं।
सुंदर शर्मीली, अगर आप मुझसे पूछें, तो यह सामान वास्तव में उससे आसान होना चाहिए।
मनोरंजक पढ़ने – karim79
@ karim79 के +1: मैं किसी भी आशा व्यक्त की कि HttpClient वास्तविकता पर एक पकड़ के साथ किसी के द्वारा बनाए रखा जा रहा है त्याग दिया है (के रूप में HttpClient 4 एपीआई पर्याप्त सबूत नहीं किया गया हो) । – skaffman
@ स्काफमैन जावा में उपयोग करने के लिए कुछ बेहतर है? – djechlin
तो अपने सर्वर Gzipped सामग्री उपलब्ध कराने के, Apache HTTP ग्राहक 4.1 के साथ सक्षम है आप सभी की जरूरत
org.apache.http.impl.client.ContentEncodingHttpClient
जो DefaultHttpClient
का एक उपवर्ग है उपयोग करने के लिए है।
यह क्लाइंट हेडर को यह भी कहेंगे कि यह GZIPped सामग्री स्वीकार करता है।
यह मेरे लिए सही काम करता है, धन्यवाद –
एचटीपी क्लाइंट 4.2.1 में, 'ContentEncodingHttpClient' को बहिष्कृत किया गया है; उपयोगकर्ताओं को DecompressingHttpClient का उपयोग करने के लिए प्रोत्साहित किया जाता है, http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/DecompressingHttpClient.html – Hbf
@Hbf को भी बहिष्कृत किया गया है। – djechlin
Custom Protocol Interceptors भी मदद कर सकता है।
अस्वीकरण: मैंने अभी तक यह कोशिश नहीं की है।
यह बॉक्स से बाहर का समर्थन नहीं करता, लेकिन आप
val entity = new GzipDecompressingEntity(response.getEntity)
बुला तो हमेशा की तरह entity.getContent
के साथ आगे बढ़ना द्वारा असम्पीडित एक में लौटे HttpResponse
की इकाई बदल सकता है।
यहाँ है, जो जावा अपाचे-http-क्लाइंट लाइब्रेरी
def createCloseableHttpClient(): CloseableHttpClient = {
val builder: HttpClientBuilder = HttpClientBuilder.create
val closableClient = builder.build()
closableClient
}
def postData(data: String): Unit = {
val entity = EntityBuilder.create()
.setText(data)
.setContentType(ContentType.TEXT_PLAIN)
.gzipCompress()
.build()
val post = new HttpPost(postURL + endPoint)
post.setEntity(entity)
post.setHeader("Content-Type", "application/gzip")
val client = createCloseableHttpClient()
client.execute(post)
client.close()
}
का उपयोग करता है 4.1 के बाद से नमूना स्केला कोड है अपाचे HttpClients अनुरोध और प्रतिक्रिया संपीड़न संभालती है। आपको अनुरोध को संपीड़ित करने की आवश्यकता नहीं है। अनुरोध शीर्षलेख & में किसी भी "स्वीकृति-एन्कोडिंग" को सेट करने की आवश्यकता नहीं है डिकंप्रेशन को संभालने की कोई आवश्यकता नहीं है। 4.3 तक यह gzip और deflate संभाल सकता है। आप ResponseContentEncoding
एपीआई डॉक here देख सकते हैं।
बस का उपयोग करें:
HttpClients.custom()
जो उपयोग करता है:
HttpClientBuilder.create()
आप पुस्तकालय गोटो में जाँच करना चाहते हैं HttpClientBuilder
इसे इस्तेमाल करता है RequestAcceptEncoding
& ResponseContentEncoding
आप "disableContentCompression के माध्यम से अक्षम कर सकते हैं () "
HttpClient httpClient = HttpClients.custom()
.setConnectionManager(cm)
.disableContentCompression() //this disables compression
.build();
कृपया सुनिश्चित करें कि यदि आप कोई इंटरसेप्टर जोड़ते हैं तो यह इसे ओवरराइड कर सकता है, इसे सावधानीपूर्वक उपयोग करें।(!)
HttpClient httpClient = HttpClients.custom()
.setConnectionManager(cm)
.setHttpProcessor(httpprocessor) //this interceptor can override your compression.
.build();
- 1. apache commons कॉन्फ़िगरेशन xpath
- 2. java.lang.NoClassDefFoundError: org/apache/commons/search/tools/DiscoverSingleton
- 3. मैवेन निर्भरता org.apache.commons के बीच क्या अंतर है: commons-io और commons-io: commons-io?
- 4. java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient
- 5. Apache HttpClient में nonProxyHosts सेट करें 4.1.3
- 6. NSURLConnection/NSURLRequest gzip समर्थन
- 7. HttpClient NoClassDefFoundError
- 8. ट्विस्ट http gzip समर्थन
- 9. apache commons लॉगिंग के लिए लॉगिंग स्तर समायोजित करें?
- 10. वेबसाईट समर्थन gzip संपीड़न कर सकता है?
- 11. Apache Commons के माध्यम से स्ट्रीमिंग फ़ाइल अपलोड के दौरान संग्रहीत डेटा कहां रखा जाता है?
- 12. Apache Commons Exec के साथ लॉन्च किए गए निष्पादन योग्य को स्ट्रिंग तर्क कैसे पाइप करें?
- 13. HttpClient
- 14. HttpClient
- 15. अपाचे HttpClient फेंकता एक NoClassDefFoundError
- 16. apache-commons-config गुण कॉन्फ़िगरेशन: अंतिम संपत्ति खोने के बाद टिप्पणियां
- 17. लाइब्रेरी संघर्ष को हल करने के लिए कैसे करें (apache commons-codec)
- 18. क्या जावास्क्रिप्ट पता लगा सकता है कि उपयोगकर्ता का ब्राउज़र gzip का समर्थन करता है?
- 19. Gzip
- 20. gzip
- 21. gzip
- 22. क्या कोई GZIP J2ME लाइब्रेरी है?
- 23. httpclient 4.x कनेक्शन
- 24. apache
- 25. प्रकार HttpClient
- 26. पोस्ट HttpClient
- 27. क्या कोई GZIP विलय है जो दो GZIP फ़ाइलों को विघटित किए बिना विलय करता है?
- 28. HttpClient 4.1.1
- 29. Apache Httpclient api के साथ XML दस्तावेज़ के रूप में प्रतिक्रिया कैसे प्राप्त करें?
- 30. Heroku धक्का: gzip gzip स्वरूप में नहीं stdin
मैं इसे बॉक्स से कैसे निकालूं? – djechlin
4.5.3 में, केवल क्लाइंट का उपयोग HttpClientBuilder.create()। Build() द्वारा करें, और यह आपके लिए सभी gzip अनुरोध और प्रतिक्रिया विकृति को संभालेगा। –