रूप igor.zh द्वारा कहे अनुसार, इस स्प्रिंग के HttpComponentsMessageSender क्लास का उपयोग करते समय समस्या हो सकती है। हालांकि, अधिक सटीक होने के लिए, यह केवल एक समस्या है यदि आप HttpComponentsMessageSender निर्माता में HttpClient का अपना उदाहरण गुजर रहे हैं - समस्या स्वचालित रूप से अन्यथा संभाली जाती है।
वसंत-ws 2.1.4 के रूप में, HttpComponentsMessageSender.RemoveSoapHeadersInterceptor उपवर्ग कि डिफ़ॉल्ट निर्माता में प्रयोग किया जाता है इस मुद्दे (https://jira.spring.io/browse/SWS-835 देखें) को संबोधित करने को सार्वजनिक कर दिया गया था और इसलिए लिखने की बजाय अपने खुद के HttpClient मामलों में इस्तेमाल किया जा सकता अपने ऐसा करने के लिए अपनी कक्षा। यह HTTP.TRANSFER_ENCODING हेडर को भी साफ़ करता है।
HttpClientBuilder.addInterceptor का उपयोग करें इस इंटरसेप्टर को अपने स्वयं के HttpClient उदाहरण में इंजेक्ट करने के लिए सबसे पहले विधि। एक्सएमएल बीन तारों का उपयोग कर नीचे उदाहरण। अगर कोई एचटीपी क्लाइंट इंस्टेंस (एक फैक्ट्री बीन क्लास लिखने के अलावा) का निर्माण करने का एक और संक्षिप्त तरीका जानता है, तो मैं सभी कान हूं!
<bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder" factory-method="create"/>
<bean id="interceptedHttpClientBuilder" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="httpClientBuilder" />
<property name="targetMethod" value="addInterceptorFirst"> </property>
<property name="arguments">
<list>
<bean class="org.springframework.ws.transport.http.HttpComponentsMessageSender.RemoveSoapHeadersInterceptor"/>
</list>
</property>
</bean>
<bean id="httpClient" factory-bean="interceptedHttpClientBuilder" factory-method="build" />
<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<constructor-arg ref="messageFactory"/>
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
<property name="httpClient" ref="httpClient"/>
</bean>
</property>
</bean>
वैकल्पिक रूप से, अगर आप कर सकते हैं, बस HttpComponentsMessageSender बल्कि यह करने के लिए एक गुजर से अपने स्वयं के HttpClient उदाहरण के निर्माण के लिए अनुमति देते हैं। इस पर मामूली नोट: वसंत-ws 2.2.0-रिलीज के रूप में, HttpComponentsMessageSender के लिए डिफ़ॉल्ट कन्स्ट्रक्टर DefaultHttpClient क्लास का उपयोग करना जारी रखता है, जिसे अब बहिष्कृत किया गया है। उम्मीद है कि भविष्य में रिलीज में इसे संबोधित किया जाएगा।
स्रोत
2015-03-11 12:21:34
बिल्कुल। जब तक आप एक सादे सॉकेट का उपयोग नहीं कर लेते हैं, तब तक आपको जावा में सामग्री-लंबाई को स्वयं सेट नहीं करना पड़ेगा। – EJP
@EJP - या java.net URL कनेक्शन वर्ग। –
नहीं, वे आपके लिए यह करते हैं। आपको केवल इसे सेट करना होगा यदि आप * उन का उपयोग नहीं कर रहे हैं। – EJP