java - 如何使用 WebServiceTemplate 发送 SOAP 请求?

标签 java spring web-services soap jaxb

我正在尝试向 SOAP 网络服务发送请求。我读了this tutorial并准备了以下代码。但是,我将向多个 SOAP Web 服务发送不同的请求,而本教程只关注一个请求。如何使用 WebserviceTemplate 发送 SOAP 请求?

WebServiceTemplate

    SoapMessage soapMsg = new SoapMessage();
    soapMsg.setUsername("Requester");
    soapMsg.setPassword("Pass");
    soapMsg.setLanguageCode("EN");
    Request request = new Request();
    request.setDeparture("FDH");
    request.setDestination("HAM");
    Date date = new Date();
    SimpleDateFormat frm2 = new SimpleDateFormat("yyyy-MM-dd");
    request.setDepartureDate(frm2.parse(frm2.format(date)));
    request.setNumADT(1);
    request.setNumCHD(0);
    request.setNumInf(0);
    request.setCurrencyCode("EUR");
    request.setWaitForResult(true);
    request.setNearByDepartures(true);
    request.setNearByDestinations(true);
    request.setRronly(false);
    request.setMetaSearch(false);
    soapMsg.setRequest(request);
    WebServiceTemplate webServiceTemplate = new WebServiceTemplate().  //how to create object and send request!
    Object response = webServiceTemplate.marshalSendAndReceive(
            "https://aaa5.elsyarres.net", soapMsg);
    Response msg = (Response) response;
    System.err.println("size of results of wogolo:"
            + msg.getFlights().getFlight().size());

最佳答案

你可以使用下面的代码,你不需要在xml文件中定义任何东西。

  try {
            SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory(
                    MessageFactory.newInstance());
            messageFactory.afterPropertiesSet();

            WebServiceTemplate webServiceTemplate = new WebServiceTemplate(
                    messageFactory);
            Jaxb2Marshaller marshaller = new Jaxb2Marshaller();

            marshaller.setContextPath("PACKAGE");
            marshaller.afterPropertiesSet();

            webServiceTemplate.setMarshaller(marshaller);
            webServiceTemplate.afterPropertiesSet();

            Response response = (Response) webServiceTemplate
                    .marshalSendAndReceive(
                            "address",
                            searchFlights);

            Response msg = (Response) response;
        } catch (Exception s) {
            s.printStackTrace();
        }

关于java - 如何使用 WebServiceTemplate 发送 SOAP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34368029/

相关文章:

java - 我可以在 Eclipse 上构建 Swing 应用程序吗?

java - 为什么 Spring 3 @Component 名称在具有不同包时会发生冲突?

java - 在 spring boot 应用程序中安排多个批处理作业

java - IWAB0399E 从 WSDL 生成 Java 时出错 : java. io.IOException:错误:缺少 <soap:fault> 元素 inFault

java - Spark 中对 JAVA 的 SQL 查询

java - 我能够编译 java 程序但无法运行 java 程序

java - 带有 Java 的 Wss4jSecurityInterceptor 的 SOAP WS-Addressing 属性

java网络服务

java - 如何使 Log4j JDK 日志适配器打印 JUL 级别?

java - Spring - 如何仅通过注释初始化 map