Понимание SOAP запросов вызова - PullRequest
0 голосов
/ 27 апреля 2020

Я сгенерировал JAXB-совместимый код клиента для веб-службы SOAP. Список документации о том, что вызов метода будет:

CalculateOrderReply CalculateOrder(CalculateOrderRequest request)

Связанные Java сгенерированные классы:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "request"
})
@XmlRootElement(name = "CalculateOrder")
public class CalculateOrder {

    @XmlElementRef(name = "request", namespace = "http://www.brinksoftware.com/webservices/ordering/20140219", type = JAXBElement.class, required = false)
    protected JAXBElement<CalculateOrderRequestComplexType> request;

    /**
     * Gets the value of the request property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link CalculateOrderRequestComplexType }{@code >}
     *     
     */
    public JAXBElement<CalculateOrderRequestComplexType> getRequest() {
        return request;
    }

    /**
     * Sets the value of the request property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link CalculateOrderRequestComplexType }{@code >}
     *     
     */
    public void setRequest(JAXBElement<CalculateOrderRequestComplexType> value) {
        this.request = value;
    }

}


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CalculateOrderReply", propOrder = {
    "order"
})
public class CalculateOrderReply
    extends OrderingWebServiceReply
{

    @XmlElementRef(name = "Order", namespace = "http://www.brinksoftware.com/webservices/ordering/20140219", type = JAXBElement.class, required = false)
    protected JAXBElement<Order> order;

    /**
     * Gets the value of the order property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link Order }{@code >}
     *     
     */
    public JAXBElement<Order> getOrder() {
        return order;
    }

    /**
     * Sets the value of the order property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link Order }{@code >}
     *     
     */
    public void setOrder(JAXBElement<Order> value) {
        this.order = value;
    }

}


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CalculateOrderRequest", propOrder = {
    "options",
    "order"
})
public class CalculateOrderRequestComplexType {

    @XmlElementRef(name = "Options", namespace = "http://www.brinksoftware.com/webservices/ordering/20140219", type = JAXBElement.class, required = false)
    protected JAXBElement<OrderingOptions> options;
    @XmlElementRef(name = "Order", namespace = "http://www.brinksoftware.com/webservices/ordering/20140219", type = JAXBElement.class, required = false)
    protected JAXBElement<NewOrder> order;

    /**
     * Gets the value of the options property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link OrderingOptions }{@code >}
     *     
     */
    public JAXBElement<OrderingOptions> getOptions() {
        return options;
    }

    /**
     * Sets the value of the options property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link OrderingOptions }{@code >}
     *     
     */
    public void setOptions(JAXBElement<OrderingOptions> value) {
        this.options = value;
    }

    /**
     * Gets the value of the order property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link NewOrder }{@code >}
     *     
     */
    public JAXBElement<NewOrder> getOrder() {
        return order;
    }

    /**
     * Sets the value of the order property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link NewOrder }{@code >}
     *     
     */
    public void setOrder(JAXBElement<NewOrder> value) {
        this.order = value;
    }

}


public class CalculateOrderRequestElement
    extends JAXBElement<CalculateOrderRequestComplexType>
{

    protected final static QName NAME = new QName("http://www.brinksoftware.com/webservices/ordering/20140219", "CalculateOrderRequest");

    public CalculateOrderRequestElement(CalculateOrderRequestComplexType value) {
        super(NAME, ((Class) CalculateOrderRequestComplexType.class), null, value);
    }

    public CalculateOrderRequestElement() {
        super(NAME, ((Class) CalculateOrderRequestComplexType.class), null, null);
    }

}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "calculateOrderResult"
})
@XmlRootElement(name = "CalculateOrderResponse")
public class CalculateOrderResponse {

    @XmlElementRef(name = "CalculateOrderResult", namespace = "http://www.brinksoftware.com/webservices/ordering/20140219", type = JAXBElement.class, required = false)
    protected JAXBElement<CalculateOrderReply> calculateOrderResult;

    /**
     * Gets the value of the calculateOrderResult property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link CalculateOrderReply }{@code >}
     *     
     */
    public JAXBElement<CalculateOrderReply> getCalculateOrderResult() {
        return calculateOrderResult;
    }

    /**
     * Sets the value of the calculateOrderResult property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link CalculateOrderReply }{@code >}
     *     
     */
    public void setCalculateOrderResult(JAXBElement<CalculateOrderReply> value) {
        this.calculateOrderResult = value;
    }

}

public class ObjectFactory {


}

Предоставлен мой универсальный c код запроса:

protected Object sendRequest(WebServiceTemplate webServiceTemplate, Object request, Class<?> expectedResponseType) {

        Object response = webServiceTemplate.marshalSendAndReceive(request);

        if (response != null && response.getClass() == expectedResponseType) {
            return response;
        }

        throw new BrinkIntegrationException("Something");
    }

Я пишу приведенный ниже запрос вызова, который не работает.

public String getCalculateOrderReply() throws BrinkIntegrationException{

        CalculateOrder calculateOrder = factory.createCalculateOrder();
        CalculateOrderReply reply = (CalculateOrderReply)sendRequest(webServiceTemplate, calculateOrder, CalculateOrder.class);

        String name = reply.getOrder().getName().getPrefix();
        return name;
    }

Как правильно написать запрос вызова, чтобы он работал?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...