Я пытаюсь написать тестовый код веб-службы 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-программировании.