java स्प्रिंग-डब्ल्यूएस: सामग्री-प्रकार निर्दिष्ट करना



servlets http-headers (1)

मेरे पास एक स्प्रिंग वेबसाइट्स है, जो कि एब्जेक्ट जेडमॉपएलोड एन्डपॉइंट पर आधारित है। यह सेवा ठीक काम करती है, सिवाय इसके कि मेरे ग्राहक को HTTP शीर्ष लेख Content-Type आवश्यकता है जो कि सही वर्णसेट (मेरे मामले में यूटीएफ -8) पर सेट किया जा सके। मुझे पता नहीं है कि मैं कहां को कॉन्फ़िगर कर सकता हूं।

मैंने एक साधारण सर्वलेट Filter लिखने की कोशिश की:

chain.doFilter(request, response);
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Content-Type", "text/xml; charset=utf-8");

लेकिन यह हेडर को बिल्कुल बदल नहीं सकता है। मुझे संदेह है कि सामग्री प्रकार हैडर स्प्रिंग-डब्लूएस द्वारा निर्धारित किया जाता है, और प्रतिसाद दिया जाता है, इसलिए कोई भी फिल्टर में मेरे कुछ सेट नहीं होने पर प्रभाव पड़ता है।

मेरा ऐप्सजर वेबलॉगिक 9.2.3 है।


हां, आपका फ़िल्टर कोड असफल हो जायेगा क्योंकि doFilter() पूर्ण होने तक, प्रतिक्रिया पूरी तरह से प्रतिबद्ध हो जाएगी, और आपको सामग्री प्रकार हैडर को बदलने की अनुमति नहीं दी जाएगी।

मैं HttpServletResponseWrapper उपवर्ग को लिखने का सुझाव देता हूं, setContentType() और / या setCharacterEncoding() तरीके को ओवरराइड करते हुए मान सेट करने के लिए। आप फिर आवरण का उदाहरण देते हैं (जो मूल प्रतिक्रिया को लपेटता है) doFilter()





spring-ws