java - 需要将我的 SOAP 请求与 SoapUI 发送的内容相匹配

标签 java spring web-services jaxb wsdl

我正在向网络服务发送请求,但该请求似乎无效。我正在使用 SoapUI 发送类似的请求,并且 Web 服务接受它。我需要将我的请求更改为 SoapUI 发送的内容。如何将命名空间添加到我的请求中? WSDLhere .

我访问了以下页面,但尚未找到解决方案。 1 , 2 , 3

代码

搜索航类

@XmlRootElement(name = "SearchFlights")
@XmlAccessorType(XmlAccessType.FIELD)
public class SearchFlights {
    @XmlElement(name = "SoapMessage")
    private SoapMessage soapMessage;

    getter and setter

肥皂消息

@XmlRootElement(name = "SoapMessage")
@XmlAccessorType(XmlAccessType.FIELD)
public class WegoloSoapMessage {
    @XmlElement(name = "Username")
    private String username;
    @XmlElement(name = "Password")
    private String password;
    @XmlElement(name = "LanguageCode")
    private String languageCode;
    @XmlElement(name = "Request")
    private Request request;

    getters and setters

请求

@XmlRootElement(name = "Request")
@XmlAccessorType(XmlAccessType.FIELD)
public class Request {
    @XmlElement(name = "Departure")
    private String departure;
    @XmlElement(name = "Destination")
    private String destination;
    @XmlElement(name = "DepartureDate")
    private String departureDate;
    @XmlElement(name = "ReturnDate")
    private String returnDate;
    @XmlElement(name = "NumADT")
    private int numADT;
    @XmlElement(name = "NumINF")
    private int numInf;
    @XmlElement(name = "NumCHD")
    private int numCHD;
    @XmlElement(name = "CurrencyCode")
    private String currencyCode;
    @XmlElement(name = "WaitForResult")
    private boolean waitForResult;
    @XmlElement(name = "NearByDepartures")
    private boolean nearByDepartures;
    @XmlElement(name = "NearByDestinations")
    private boolean nearByDestinations;
    @XmlElement(name = "RROnly")
    private boolean rronly;
    @XmlElement(name = "MetaSearch")
    private boolean metaSearch;

getters and setters

jaxb.in​​dex

SearchFlights
Flight
Flights
Leg
Legs
Outbound
Request
Response
WegoloSoapMessage

发送请求的代码

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

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

        marshaller.setContextPath("com.myprojet.flights.wegolo");
        marshaller.afterPropertiesSet();

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

        Response response = (Response) webServiceTemplate
                .marshalSendAndReceive(
                        "http://www5v80.elsyarres.net/service.asmx",
                        searchFlights,
                        new WebServiceMessageCallback() {
                            public void doWithMessage(WebServiceMessage message) 
                            {
                                ((SoapMessage)message).setSoapAction("ElsyArres.API/SearchFlights");
                            }
                       }
                   );

        Response msg = (Response) response;
        System.err.println("Wegolo >>>"
                + msg.getFlights().getFlight().size());
    } catch (Exception s) {
        s.printStackTrace();
    }
}

我的请求

enter image description here enter image description here

SoapUI 请求

enter image description here enter image description here

最佳答案

在您的请求中,元素之前没有命名空间,就像来自 SoapUI 的请求一样。

例如您的元素:

<SearchFlights>

SoupUI 元素:

<els:SearchFlights>

您应该使用代码形式 here 在所有元素之前添加命名空间 xmlns:els="ElsyArres.API" 和前缀或herehere .

关于java - 需要将我的 SOAP 请求与 SoapUI 发送的内容相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34786724/

相关文章:

java - Maven:如何覆盖依赖关系

java - Iterable 中的异常处理

java - 即使数据库中只插入一行,hibernate 也会自动加载多个重复行

wcf - 在 Visual Studio 中测试 WSDL

java - Libgdx 渲染矩形阵列不同的纹理

java - Jackson CSV Writer 抛出 ArrayIndexOutOfBoundsException

java - 如果一个类只委托(delegate)而什么都不做,那么它有什么用呢?

spring - 如何在不使用任何 XML 文件的情况下设置 Spring Web 服务?

java - 调用webservice应该是同一个线程还是单独的线程?

web-services - 我应该使用 Tomcat 还是完整的 Java EE 容器?