Понимание класса Java службы WSDL - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь написать тестовый код веб-службы WSDL в Java. Этот код возвращает мне некоторые значения переменных и должен разместить заказ. Из этого кода у меня есть эквивалент на C #, но я не понимаю, как конвертировать в Java. Это мой код на Java:

 package betdaqclient; 
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List; 
 import javax.xml.bind.JAXBElement;
 public class test 
 {
public static void main(String[] args) 
{
ExternalApiHeader externalAPIHeader = new ExternalApiHeader();
externalAPIHeader.languageCode = "en";
externalAPIHeader.username = "myusername";
externalAPIHeader.password = "mypassword";
externalAPIHeader.version = new BigDecimal ("2.0"); 

ReadOnlyService_Service ro = new ReadOnlyService_Service();
ReadOnlyService readOnlyService = ro.getReadOnlyService();
SecureService_Service ss = new SecureService_Service();
SecureService secureService = ss.getSecureService(); 


GetAccountBalancesRequest getAccountBalanceRequest = new GetAccountBalancesRequest();
GetAccountBalancesResponse2 getAccountBalanceResponse = secureService.getAccountBalances(getAccountBalanceRequest, externalAPIHeader);
System.out.printf("%n%nUser  : "  + externalAPIHeader.username);
System.out.printf("%nBalance  : " + getAccountBalanceResponse.balance.toString()); 
System.out.printf("%nExposure : " + getAccountBalanceResponse.exposure.toString()); 
System.out.printf("%nAvailable: " + getAccountBalanceResponse.availableFunds.toString()+"%n");



SimpleOrderRequest bet = new SimpleOrderRequest();

bet.selectionId = (long) IdMarket;

bet.polarity = (byte) 1 ; //<-----BACK?

bet.stake = new BigDecimal("1.00") ;

bet.price = new BigDecimal("1.01") ;
bet.cancelOnInRunning = true ; 





PlaceOrdersNoReceiptRequest request = new PlaceOrdersNoReceiptRequest();

/* Lacking Code */





 PlaceOrdersNoReceiptResponse2 response = secureService.placeOrdersNoReceipt(request,externalAPIHeader);


}
} 

Я полагаю, что мой bet должен быть преобразован в список и затем передан в request. Это код на C #, который я нашел в примерах:

    public long[] PlaceOrdersNoReceipt(long selectionId, byte polarity, decimal amount

        , decimal odds, byte resetCount)

    {

        SimpleOrderRequest order = new SimpleOrderRequest();

        order.SelectionId = selectionId;

        order.Polarity = polarity;

        order.Stake = amount;

        order.Price = odds;

        order.ExpectedSelectionResetCount = resetCount;





        PlaceOrdersNoReceiptRequest request = new PlaceOrdersNoReceiptRequest();

        request.Orders = new SimpleOrderRequest[1] {order};





        PlaceOrdersNoReceiptResponse response = _proxy.PlaceOrdersNoReceipt(request);

        if (response.ReturnStatus.Code != 0)

            throw new Exception(response.ReturnStatus.Description);





        return response.OrderHandles;

    }

Это определение класса, построенного из wsdl:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PlaceOrdersNoReceiptRequest", propOrder = {
"orders",
"wantAllOrNothingBehaviour"
})
public class PlaceOrdersNoReceiptRequest {

@XmlElement(name = "Orders", required = true)
protected PlaceOrdersNoReceiptRequest.Orders orders;
@XmlElement(name = "WantAllOrNothingBehaviour")
protected boolean wantAllOrNothingBehaviour;

public PlaceOrdersNoReceiptRequest.Orders getOrders() {return orders;}


public void setOrders(PlaceOrdersNoReceiptRequest.Orders value) {this.orders = value;}


public boolean isWantAllOrNothingBehaviour() { return wantAllOrNothingBehaviour; }
public void setWantAllOrNothingBehaviour(boolean value)    {this.wantAllOrNothingBehaviour = value;}


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"order"})
public static class Orders {

    @XmlElement(name = "Order", required = true)
    protected List<SimpleOrderRequest> order;
    public List<SimpleOrderRequest> getOrder() {
        if (order == null) {
            order = new ArrayList<SimpleOrderRequest>();
        }
        return this.order;
    }

}

}

Вопрос в том, как мне преобразовать bet элемент класса SimpleOrderRequest в request класса PlaceOrderNoRecepeit? Может быть, это очень глупый вопрос, но я новичок в Java-программировании.

1 Ответ

1 голос
/ 26 января 2012

Не хватает кода должно быть

PlaceOrdersNoReceiptRequest.Orders orders = new PlaceOrdersNoReceiptRequest.Orders();
orders.getOrder().add(bet);

PlaceOrdersNoReceiptRequest request = new PlaceOrdersNoReceiptRequest();
request.setOrders(orders);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...