Создать SOAP-запрос от JWSDL - PullRequest
       52

Создать SOAP-запрос от JWSDL

0 голосов
/ 25 августа 2010

Привет, я работал с JWSDL, чтобы позволить мне программно работать с файлами WSDL. Теперь я хочу создать SOAP-запросы, которые можно отправлять на сервер. Как мне сгенерировать эти запросы из классов JWSDL? есть идеи?

спасибо!

1 Ответ

0 голосов
/ 01 сентября 2012

Вы можете сделать это так:

Здесь я создал образец веб-сервиса, который принимает два параметра № 1 и № 2. И дает ответ как число 3 (= число 1 + номер 2). Веб-сервис уже развернут на локальном хосте: 8080 (tomcat сервер)

Ваш ответ начинается здесь .

Я создал образец файла Java ... который передает два параметра веб-сервис в запросе SOAP и получает ответ SOAP из Интернета оказание услуг. Вы можете получить параметры (описанные в коде), такие как getCalculation, m, localhost: 8080, number1, number2 и url из файла WSDL.

Пример кода:

package SampleJavaWSDLDemo;
  • import javax.xml.soap. *;
  • import java.util. *;
  • import java.net.URL;
  • import javax.xml.transform. *;
  • import javax.xml.transform.stream.StreamResult;
  • import javax.xml.soap.SOAPConnectionFactory;
  • import javax.xml.soap.SOAPConnection;
  • import javax.xml.soap.MessageFactory;
  • import javax.xml.soap.SOAPMessage;
  • import javax.xml.soap.SOAPPart;
  • import javax.xml.soap.SOAPEnvelope;
  • import javax.xml.soap.SOAPBody;
  • import java.net.URL;

открытый класс SampleJavaWSDLDemo {

public static void main(String[] args) 
{
    try {

    //Create a SOAPMessage
    SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
    SOAPConnection connection = soapConnectionFactory.createConnection();
    SOAPFactory soapFactory = SOAPFactory.newInstance();
    MessageFactory factory = MessageFactory.newInstance();
    SOAPMessage message = factory.createMessage();
    SOAPHeader header = message.getSOAPHeader();
    SOAPBody body = message.getSOAPBody();
    header.detachNode();

    Name bodyName = soapFactory.createName("getCalculation", "m", "http://localhost:8080/");
    SOAPBodyElement bodyElement = body.addBodyElement(bodyName);

            //Insert Content
    Name name = envelope.createName("number1");
    SOAPElement symbol = bodyElement.addChildElement(name);
    symbol.addTextNode("10");
    name = envelope.createName("number2");
    symbol = bodyElement.addChildElement(name);
    symbol.addTextNode("20");

            System.out.println("\n Request: \n");
            message.writeTo(System.out);
            System.out.println();

            // Create an endpint point which is either URL or String type
    URL endpoint = new URL("http://localhost:8080/WebServiceName/OperationName");

            //Send a SOAPMessage (request) and then wait for SOAPMessage (response)
    SOAPMessage response = connection.call(message, endpoint);

    // Get the response from the webservice.                
    SOAPBody soapBody = response.getSOAPBody();

    System.out.println("\n Response: \n");
    TransformerFactory transformerfactory = TransformerFactory.newInstance();
    Transformer transformer = transformerfactory.newTransformer();
    Source sourceContent = response.getSOAPPart().getContent();
    StreamResult result = new StreamResult(System.out);
    transformer.transform(sourceContent, result);
    System.out.println();
    String resp = response.getSOAPBody().getElementsByTagName("return").item(0).getFirstChild().getNodeValue();
    System.out.println("Answer is: " + resp);

    connection.close();

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

} * * тысяча пятьдесят-один

Попробуйте запустить этот код. Он может дать вам полный запрос на мыло и ответное сообщение.

...