SOAP客户端:SAAJ0514无法从给定源创建信封,因为根元素未命名信封



我正在尝试实现肥皂客户端(我在这里找到了代码,并试图将其调整到我的问题(将文件发送到endpointUrlll((。我只有SOAPACTION和ENDPOINTURL将消息发送到服务器。

public class SOAPClient {
private static final Logger logger = LoggerFactory.getLogger(SOAPClient.class);
private static File file = null;
public static void main(String args[]) {
    String soapEndpointUrl = "url?wsdl";
    String soapAction = "soapAction(https)"
    file = new File("myFileToSend.xml");
    callSoapWebService(soapEndpointUrl, soapAction,file);
}
private static void createSoapEnvelope(SOAPMessage soapMessage,Document doc) throws SOAPException {

    SOAPPart soapPart = soapMessage.getSOAPPart();
    DOMSource domSource = new DOMSource(doc);
    soapPart.setContent(domSource);
    //Error here !
    SOAPEnvelope envelope = soapMessage.getSOAPPart().getEnvelope();
    SOAPHeader header = envelope.getHeader();

}
private static void callSoapWebService(String soapEndpointUrl, String soapAction,File f) {
    try {
        file = f;
        // Create SOAP Connection
        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
        SOAPConnection soapConnection = soapConnectionFactory.createConnection();
        // Send SOAP Message to SOAP Server
        SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(soapAction), soapEndpointUrl);
        if(soapResponse!=null){
            // Print the SOAP Response
            logger.info("Response SOAP Message:");
            soapResponse.writeTo(System.out);
            logger.info("----------------------------------------------");
            logger.info("soap reponse : "+soapResponse);
        }
        soapConnection.close();
    } catch (Exception e) {
        logger.error("nError occurred while sending SOAP Request to Server!n");
        e.printStackTrace();
    }
}
private static SOAPMessage createSOAPRequest(String soapAction) throws Exception {
    Document doc = addXmlFile();
    SOAPMessage soapMessage = null;
    if(doc!=null){
        MessageFactory messageFactory = MessageFactory.newInstance();
        soapMessage = messageFactory.createMessage();
        createSoapEnvelope(soapMessage,doc);
        soapMessage.saveChanges();
        logger.info(soapMessage.toString());
        /* Print the request message, just for debugging purposes */
        logger.info("Request SOAP Message:");
        soapMessage.writeTo(System.out);
    }
    return soapMessage;
}

@SuppressWarnings("finally")
private static Document addXmlFile() {
    Document doc = null;
    try {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        doc = builder.parse(file.getAbsoluteFile());
        return doc;
    } catch (SAXException | IOException e) {
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    }
    finally {
        return doc;
    }
}

实际上,当我尝试启动此代码时,我会收到错误:SAAJ0514无法从给定源创建信封,因为根元素未命名信封。和错误SAAJ0511:不可能从给定的源创建一个信封

com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source: 
    at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:117)
    at com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:69)
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:125)
    at SOAPClient.createSoapEnvelope(SOAPClient.java:70)
    at SOAPClient.createSOAPRequest(SOAPClient.java:132)
    at SOAPClient.callSoapWebService(SOAPClient.java:103)
    at SOAPClient.main(SOAPClient.java:39)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source because the root element is not named "Envelope"
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.lookForEnvelope(SOAPPartImpl.java:154)
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:121)
    at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:110)
    ... 6 more

我在许多站点上看到了一些类似的错误,但没有一个真正帮助我找到了如何纠正此问题(有人解释说删除服务器上的某些参数(。

谢谢您的答案。

我在与之合作并删除的公司中遇到了该错误?wsdl部分是我需要做的确切的事情。

相关内容

  • 没有找到相关文章

最新更新