如何为给定 XML 的客户端 SAAJ 创建 SOAP 请求



我是SOAP新手。我想创建一个soap请求,xml .

.xml

<?xml version="1.0" encoding="utf-8"?> 
        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
        <soap:Body> 
        <SendRequest xmlns="http://tempuri.org/"> 
        <request xsi:type="RegisterCheckRequest" Id="7a646d45-ee2f-4b1c-8de8-780c416fbbd0" Service="42" xmlns="http://paygo24.com/v3/protocol"> 
        <PaymentParameters xmlns=""> 
        <Parameter Name="account" Value="08374829" /> 
        </PaymentParameters> 
        </request> 
        <pointId>46</pointId> 
        <password>4QrcOUm6Wau+VuBX8g+IPg==</password>
         </SendRequest>
          </soap:Body> 
          </soap:Envelope>

我正在使用以下示例java文件来创建soap请求,但我无法这样做,任何人都可以给我支持。

用于创建 SOAP 请求的示例 Java 文件

import javax.xml.soap.*;
public class SOAPClientSAAJ {
    public static void main(String args[]) throws Exception {
        // 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);
        // print SOAP Response
        System.out.print("Response SOAP Message:");
        soapResponse.writeTo(System.out);
        soapConnection.close();
    }
    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>mutantninja@gmail.com</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("mutantninja@gmail.com");
        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;
    }
}

这就是你构建肥皂请求的方式

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

    SOAPEnvelope envelope = soapPart.getEnvelope();      
    envelope.removeNamespaceDeclaration(envelope.getPrefix());
    envelope.addNamespaceDeclaration("soap","http://schemas.xmlsoap.org/soap/envelope/");
    envelope.setPrefix("soap");              
    envelope.addNamespaceDeclaration("xsi","http://www.w3.org/2001/XMLSchema-instance");
    envelope.addNamespaceDeclaration("xsd","http://www.w3.org/2001/XMLSchema"); 
    SOAPHeader header=soapMessage.getSOAPHeader();                      
    header.setPrefix("soap");       
    SOAPBody soapBody = envelope.getBody();
    soapBody.setPrefix("soap");
    SOAPElement root=soapBody.addChildElement(new QName("http://tempuri.org/","SendRequest"));      
    SOAPElement request=root.addChildElement(new QName("http://paygo24.com/v3/protocol","request"));       
    request.setAttribute("xsi:type", "RegisterCheckRequest");
    request.setAttribute("Id","7a646d45-ee2f-4b1c-8de8-780c416fbbd0");
    request.setAttribute("Service","42");        
    SOAPElement paymentParameters =request.addChildElement(new QName(" ","PaymentParameters"));
    SOAPElement parameter=paymentParameters.addChildElement("Parameter");        
    parameter.setAttribute("Name","account");
    parameter.setAttribute("Value", "08374829");
    root.addChildElement("pointId").setValue("46");       
    root.addChildElement("password").setValue("4QrcOUm6Wau+VuBX8g+IPg==");           
    soapMessage.saveChanges();
    soapMessage.writeTo(System.out);

    return soapMessage;
}

您可以使用注释从对象生成 XML,以将类成员绑定到 XML 元素/属性。一种流行的方法是使用 JAX-B。请参阅本教程:http://www.vogella.com/tutorials/JAXB/article.html

相关内容

  • 没有找到相关文章

最新更新