मैं वसंत WebServiceGatewaySupport का उपयोग करके जावा में साबुन सेवा उपभोक्ता को लागू करने का प्रयास कर रहा हूं।

जब मैं नीचे दी गई सेवा का उपभोग करने के लिए curl का उपयोग कर रहा हूं, तो यह उचित प्रतिक्रिया दे रहा है।

 curl -d @request.xml -H 'SOAPAction:abc:mnEvent#DoAction' https://myhost.org/cd/doAction.jsp

मैं WebServiceGatewaySupport से विरासत में मिली टेम्पलेट क्लास में निम्नलिखित HttpHeaders जोड़कर, जावा का उपयोग करके इसे लागू करने का प्रयास कर रहा हूं।

public O callWebService(String url, I request) {
    return (O) getWebServiceTemplate().marshalSendAndReceive(url, request, new WebServiceMessageCallback() {
        @Override
        public void doWithMessage(WebServiceMessage message) {
            TransportContext transportContext = TransportContextHolder.getTransportContext();
            HttpComponentsConnection connection = (HttpComponentsConnection) transportContext.getConnection();
            connection.getHttpPost().addHeader("SOAPAction", "abc:mnEvent#DoAction");
        }
    });
}

इस कोड के साथ, मुझे नीचे जैसा त्रुटि संदेश मिल रहा है।

SOP-330006 विधि 'DoAction, ""' SOAP सेवा 'abc:mnEvent' में परिभाषित नहीं है।

curl कमांड को जावा में ले जाते समय मुझे यहाँ क्या याद आती है?

1
niyasc 6 जुलाई 2020, 16:39

1 उत्तर

सबसे बढ़िया उत्तर

त्रुटि संदेश SOP-330006 The method 'DoAction, ""' is not defined in SOAP service 'abc:mnEvent'. इंगित करता है, अनुरोध में दो साबुन क्रियाएं हैं।

  1. स्पष्ट साबुन क्रिया HttpHeader में जोड़ा गया
  2. साबुन संदेश में निहित साबुन क्रिया

इस समस्या से बचने के लिए, हमें हेडर से सोपएक्शन को हटाना होगा और इसे सोपमैसेज में सेट करना होगा।

SaajSoapMessage soapMessage = (SaajSoapMessage) message;
soapMessage.setSoapAction("abc:mnEvent#DoAction");
0
niyasc 19 पद 2020, 09:50