Добавление содержимого в мыльное сообщение (базовое)

1

Ниже приведен код, который я использовал для понимания концепции мыльных сообщений и т.д. Однако в этом коде есть две строки, которые state-

 MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", serverURI  + "VerifyEmail");

Почему это невозможно просмотреть при печати? Также хотел бы добавить заголовок " <?xml version="1.0" encoding="utf-8"?> " Как это можно сделать? и как я могу получить весь вывод/представление того, как он выглядит как отправленный. Заголовок и все такое? Спасибо.

   import javax.xml.soap.*;
    import javax.xml.transform.*;
    import javax.xml.transform.stream.*;

    public class SOAPClientSAAJ {

        /**
         * Starting point for the SAAJ - SOAP Client Testing
         */
        public static void main(String args[]) {
            try {
                // Create SOAP Connection
                SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
                SOAPConnection soapConnection = soapConnectionFactory.createConnection();

                // Send SOAP Message to SOAP Server
                String url = "http://ws.cdyne.com/emailverify/Emailvernotestemail.asmx";
                SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(), url);

                // Process the SOAP Response
                printSOAPResponse(soapResponse);

                soapConnection.close();
            } catch (Exception e) {
                System.err.println("Error occurred while sending SOAP Request to Server");
                e.printStackTrace();
            }
        }

        private static SOAPMessage createSOAPRequest() throws Exception {
            MessageFactory messageFactory = MessageFactory.newInstance();
            SOAPMessage soapMessage = messageFactory.createMessage();
            SOAPPart soapPart = soapMessage.getSOAPPart();

            String serverURI = "http://ws.cdyne.com/";

            // SOAP Envelope
            SOAPEnvelope envelope = soapPart.getEnvelope();
            envelope.addNamespaceDeclaration("example", serverURI);

            /*
            Constructed SOAP Request Message:
            <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:example="http://ws.cdyne.com/">
                <SOAP-ENV:Header/>
                <SOAP-ENV:Body>
                    <example:VerifyEmail>
                        <example:email>[email protected]</example:email>
                        <example:LicenseKey>123</example:LicenseKey>
                    </example:VerifyEmail>
                </SOAP-ENV:Body>
            </SOAP-ENV:Envelope>
             */

            // SOAP Body
            SOAPBody soapBody = envelope.getBody();
            SOAPElement soapBodyElem = soapBody.addChildElement("VerifyEmail", "example");
            SOAPElement soapBodyElem1 = soapBodyElem.addChildElement("email", "example");
            soapBodyElem1.addTextNode("[email protected]");
            SOAPElement soapBodyElem2 = soapBodyElem.addChildElement("LicenseKey", "example");
            soapBodyElem2.addTextNode("123");

            MimeHeaders headers = soapMessage.getMimeHeaders();
            headers.addHeader("SOAPAction", serverURI  + "VerifyEmail");

            soapMessage.saveChanges();

            /* Print the request message */
            System.out.print("Request SOAP Message = ");
            soapMessage.writeTo(System.out);
            System.out.println();

            return soapMessage;
        }

        /**
         * Method used to print the SOAP Response
         */
        private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception {
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            Source sourceContent = soapResponse.getSOAPPart().getContent();
            System.out.print("\nResponse SOAP Message = ");
            StreamResult result = new StreamResult(System.out);
            transformer.transform(sourceContent, result);
        }

    }
Теги:
soap
web-services

1 ответ

0

Я не уверен, есть ли способ распечатать их непосредственно из DOM или SOAP, но вы можете разобрать значения и распечатать их отдельно:

        SOAPHeader header = message.getSOAPHeader();
        if (header == null) {
            // Throw an exception
         }

        NodeList headerPartNode = header.getChildNodes();
        String headerPart = headerPartNode.item(0).getChildNodes().item(0).getNodeValue();

Вы можете перебирать этот NodeList, анализировать каждую часть заголовка, а затем печатать их отдельно, например.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню