2012-11-01 10 views
10

Hoh मैं एक पूरे सोप संदेश की एक स्ट्रिंग प्रतिनिधित्व से एक SOAPMessage बना सकते हैं बनाना? कारण मैं ऐसा करने की कोशिश कर रहा हूं कि मेरे पास एक वेब सेवा के लिए एक एसओएपी हैंडलर है जहां मैं एसओएपी संदेश कैप्चर करता हूं। मुझे किसी अन्य घटक को भेजने के लिए वेब सेवा में संपूर्ण SOAP संदेश को संरक्षित करने की आवश्यकता है। अभी, वेब सेवा एसओएपी लिफाफा जानकारी बंद कर देता है। तो हैंडलर में मैंने एसओएपी संदेश की प्रति बना दी, बेस 64 ने इसे एन्कोड किया, मूल बॉडी सामग्री को हटा दिया, और एन्कोडेड स्ट्रिंग को जोड़ा। वेब सेवा में मैं शरीर (इनकोडिंग सोप संदेश) को डिकोड और एक SOAPMessage के रूप में यह फिर से संगठित एक और घटक के लिए रवाना भेजने के लिए कोशिश कर रहा हूँ।के पूरे सोप संदेश स्ट्रिंग XML से एक SOAPMessage

+0

आप java.xml.soap पैकेज का उपयोग कर सकते एक एसओएपी संदेश बनाने के लिए – ChadNC

उत्तर

2

मैं दो चरणों में ऐसा किया। पहले एक डॉम दस्तावेज़ बनाया, और उसके बाद दस्तावेज़ से SOAPMessage बनाएँ।

50

As per Javadoc, javax.xml.soap.MessageFactory लिफाफे, बॉडी, हेडर जैसे आवश्यक वस्तुओं के साथ एसओएपी संदेश को पूर्व-जनसंख्या बनाते हैं ताकि यह सुनिश्चित किया जा सके कि संदेश सही ढंग से फोम किया गया है। हालांकि, createMessage विधि का ही संस्करण है कि संदेश डेटा स्वीकार करता है, एक InputStream के रूप में यह स्वीकार करता है। इसलिए एक StringInputStream करने के लिए रूपांतरण की जरूरत है, अर्थात् स्ट्रिंग बाइट्स से एक नया बाइट धारा का निर्माण।

यह संक्षिप्तता की खातिर एक सरल उदाहरण है। आवेदन कोड में एक एक क्षेत्र के लिए निकाल कर प्रत्येक विधि कॉल पर एक कारखाने बनाने से बचने के सकता/निरंतर, आवश्यक सोप प्रोटोकॉल संस्करण, विभिन्न चारसेट, आदि निर्दिष्ट

private SOAPMessage getSoapMessageFromString(String xml) throws SOAPException, IOException { 
    MessageFactory factory = MessageFactory.newInstance(); 
    SOAPMessage message = factory.createMessage(new MimeHeaders(), new ByteArrayInputStream(xml.getBytes(Charset.forName("UTF-8")))); 
    return message; 
} 
+0

क्या आप अपना उत्तर थोड़ा और विस्तारित कर सकते हैं? धन्यवाद। –

+1

कुछ और स्पष्टीकरण जोड़े गए, कोड को ब्रेवटी के रूप में छोड़कर। – tiurin

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