2013-04-16 3 views
1

SoapUI 사용 다음 XML 봉투를 작성하고이를 String으로 캡슐화했습니다.Java - String XML Envelope에서 SOAP 웹 서비스 사용

ProcessJournal는 매개 변수가없는 메서드이며 문자열을 반환합니다.

String soapText = "<Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:upd=\"http://webservices.vm.vmc/UpdateCMA/\">" + 
        "<Header/>" + 
        "<Body>" + 
         "<upd:ProcessJournal/>" + 
        "</Body>" + 
        "</Envelope>"; 

이제 위의 정의 된 웹 서비스를 호출하기 만하면됩니다. 그리고, message.getSOAPBody()에서 ;, 나는 오류를 내가 찾을

XML-22103: (Fatal Error) DOMResult can not be this kind of node. 
Apr 16, 2013 12:05:06 PM com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory createEnvelope 
SEVERE: SAAJ0511: Unable to create envelope from given source 

모든 다양한 샘플을 얻을하는 문제는의를 가진 결국 그렇게

   // Create SoapMessage 
       MessageFactory msgFactory  = MessageFactory.newInstance(); 
       SOAPMessage message   = msgFactory.createMessage(); 
       SOAPPart soapPart    = message.getSOAPPart(); 

       // Load the SOAP text into a stream source 
       byte[] buffer     = soapText.getBytes(); 
       ByteArrayInputStream stream = new ByteArrayInputStream(buffer); 
       StreamSource source   = new StreamSource(stream); 

       // Set contents of message 
       soapPart.setContent(source); 

       // -- DONE 
       message.writeTo(System.out); 


       //Try accessing the SOAPBody 
       SOAPBody soapBody = message.getSOAPBody(); 

몇 가지 예제 코드가 어떻게 발견 getSOAPBody()가 실행될 때와 동일한 유형의 오류.

답변

1

나는 이것에 대한 해결책을 찾았는지 모르겠다. 나는 최근에 정확한 오류를보고 있었고 TransformerFactory가 설정되지 않았기 때문에 발생했습니다.

저는 Saxon 라이브러리에서 TransformerFactory를 사용했습니다.이 용기는 얻을 수있는 용기는 here입니다.

나는 다음 색슨의 TransformerFactory를 참조하는 시스템 속성을 설정 :

내 코드를 다시 실행할 때 오류가 다음 사라
System.setProperty("javax.xml.transform.TransformerFactory",  
     "net.sf.saxon.TransformerFactoryImpl"); 

.

위는 TransformerFactory를 설정하는 한 가지 방법 일뿐입니다. 여기에 내가 찾은 여러 가지 다른 방법이 있습니다. stackoverflow.com/questions/11314604/

+0

게시물을 가져 주셔서 감사합니다. 아무도 일을 할 수 없기 때문에 우리는 다른 길로 가게되었습니다. 그러나 다시 시도 할 필요가 생길 때 나는 당신의 제안을 시도 할 것이다 :) 고마워! – adam

1

soapText에 네임 스페이스 접두어가 붙은 문제가있는 것처럼 보입니다. 나는 오류없이 수동으로 다음과 같이 soapText을 수정하여 간단히하는 TransformerFactory를 설정하지 않고 귀하의 예제를 실행 할 수 있었다 :

String soapText = 
    "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:upd=\"http://webservices.vm.vmc/UpdateCMA/\">" + 
     "<soapenv:Header/>" + 
     "<soapenv:Body>" + 
      "<upd:ProcessJournal/>" + 
     "</soapenv:Body>" + 
    "</soapenv:Envelope>"; 

참고 추가 soapenv 다음 UPD 달리 모든 비누 요소 접두사 접두사를 비누 서비스 네임 스페이스에 추가하십시오.