Java 응용 프로그램에 SOAP 호출을 통합하려고합니다. 온라인으로 다양한 튜토리얼을 따라 왔지만, 애플리케이션을 실행하면 sm.saveChanges()
에 오류가 발생하고 해당 행이 주석 처리 된 경우 sm.writeTo(System.out)
에 오류가 발생합니다.Java 응용 프로그램에서 SOAP 호출
//Create a SOAPConnection
SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance();
SOAPConnection connection = sfc.createConnection();
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage sm = mf.createMessage();
SOAPPart sp = sm.getSOAPPart();
SOAPEnvelope sv = sp.getEnvelope();
SOAPHeader sh = sm.getSOAPHeader();
//SOAPHeaderElement headerElement = sh.addHeaderElement(sv.createName("Signature", "SOAP-SEC", "http://schemas.xmlsoap.org/soap/security/2000-12"));
SOAPBody sb = sm.getSOAPBody();
//sh.detachNode();
MimeHeaders headers = sm.getMimeHeaders();
headers.addHeader("SOAPAction", "\"\"");
//QName bodyName = new QName("http://quoteCompany.com", "GetQuote", "d");
//QName bodyName = new QName(msisdn, "GetRioInformationsRequest", "ser");
//QName bodyName = new QName("http://schemas.xmlsoap.org/soap/encoding/", "GetRioInformationsRequest", XMLConstants.DEFAULT_NS_PREFIX);
QName bodyName = new QName("http://quoteCompany.com/", "GetQuote", "ser");
//QName bodyName = sv.createQName("http://quoteCompany.com/", "GetQuote", "ser");
Name bodyName2 = sv.createName("GetQuote","ser", "http://quoteCompany.com/");
SOAPBodyElement bodyElement = sb.addBodyElement(bodyName2);
//QName qn = new QName("aName");
//Name qn = sv.createName("rioSearchRequest");
QName qn = new QName("returnCode");
SOAPElement quotation = bodyElement.addChildElement(qn);
//quotation.addChildElement(qn2);
//Name qn2 = sv.createName("msisdn");
//qn2.
//quotation.addAttribute(qn2, msisdn);
//quotation.addTextNode("TextMode");
quotation.addTextNode(msisdn);
System.out.println("Saving SOAP message.");
sm.saveChanges();
System.out.println("\n Soap Request:\n");
sm.writeTo(System.out);
System.out.println("Request Outputted for viewing.");
//URL endpoint = new URL("http://yourServer.com");
URL endpoint = new URL("http://127.0.0.1:8088/mockSoapBinding");
System.out.println("URL entered.");
SOAPMessage response = connection.call(sm, endpoint);
System.out.println("Resquest Sent!");
System.out.println(response.getContentDescription());
System.out.println("Response obtained!");
그리고 해당 오류는 다음과 같습니다 :
XSL-1101: (Fatal Error) DOMSource node as this type not supported.
Jun 27, 2012 4:37:45 PM com.sun.xml.messaging.saaj.soap.MessageImpl saveChanges
SEVERE: SAAJ0539: Unable to get header stream in saveChanges
Jun 27, 2012 4:37:45 PM com.sun.xml.messaging.saaj.soap.MessageImpl saveChanges
SEVERE: SAAJ0540: Error during saving a multipart message
SOAP Call Issue: Error during saving a multipart message
com.sun.xml.messaging.saaj.SOAPExceptionImpl: Error during saving a multipart message
at com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1209)
at com.application.package.SOAPCalls.SOAPCall(SOAPCalls.java:66)
at com.application.package.Main.<init>(Main.java:97)
at com.application.package.Main.main(Main.java:253)
Caused by: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to get header stream in saveChanges:
at com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1179)
... 3 more
Caused by: java.io.IOException: XSL-1101: (Fatal Error) DOMSource node as this type not supported.
at com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:306)
at com.sun.xml.messaging.saaj.soap.impl.EnvelopeImpl.output(EnvelopeImpl.java:317)
at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getContentAsStream(SOAPPartImpl.java:324)
at com.sun.xml.messaging.saaj.soap.MessageImpl.getHeaderBytes(MessageImpl.java:1020)
at com.sun.xml.messaging.saaj.soap.MessageImpl.saveChanges(MessageImpl.java:1171)
... 3 more
어떤 제안 아래
코드인가?
같은 기존 SOAP 라이브러리 중 하나를 사용하고 싶지 않은 이유가 있습니까? 예를 들어, 다음과 같이 웹 서비스를 호출하면 자동으로 생성 된 코드를 사용하여 웹 서비스를 호출 할 수 있습니다. 아파치 축? – Drizzt321
[this] (http://blog.aplikacja.info/2010/06/configurationexception-xml-22101-fatal-error-domsource-node-as-this-type-not-supported/) 링크도 확인하십시오. – Jeshurun