Java SOAP 请求

Java SOAP request

在我使用 SOAP 自学的过程中,我试图提出一个请求:
1. 为了测试,我选择了交易员的 api wsdl.
2.借助maven-jaxb2-plugin生成java类.
3. 其中还有如:ObjectFactory, TokenRequest, TokenResponse, GetInfoRequest.
4. 我正在通过 ObjectFactory 创建新对象,我想我正在做一个请求:

ObjectFactory factory = new ObjectFactory();
TokenRequest tokenRequest = factory.createTokenRequest();
tokenRequest.setLogin(12345);
tokenRequest.setPassword(factory.createTokenRequestPassword("password"));
TokenResponse tokenResponse = factory.createTokenResponse();
GetInfoRequest getInfoRequest = factory.createGetInfoRequest();
getInfoRequest.getLogin();  //It's null

为什么我在那里得到空值(我错过了什么)?我什至提出要求吗?如果我真的成功了,我该如何追踪?

Do I even make a request?

不,你不是在做请求,你只是在那边创建对象

检查你为两个 类 生成的 类 称为 ClientTradingServiceIClientTradingApi 你必须使用它们来完成请求。

ObjectFactory factory = new ObjectFactory();
TokenRequest tokenRequest = factory.createTokenRequest();
tokenRequest.setLogin(12345);
tokenRequest.setPassword(factory.createTokenRequestPassword("password"));

//create your service should be something similar to this 
ClientTradingService service = new ClientTradingService();
IClientTradingApi iservice = service.getBasicHttpBindingIClientTradingApi();

//do your request should be something similar to this 
TokenResponse tokenResponse = iservice.getAuthenticationToken(tokenRequest);

//now you can get the info from the response 
tokenResponse.getToken();//this should return the authentication token 

做其他的请求,流程同上。

如果您打开 WSDL,那么在下面的部分中您会发现 wsdl:portType name="IClientTradingApi"服务名称="ClientTradingService"。 您必须使用那些 class 来调用该服务。 下面的代码可能对你有帮助。

    ObjectFactory factory = new ObjectFactory();
    TokenRequest tokenRequest = factory.createTokenRequest();
    tokenRequest.setLogin(12345);
    tokenRequest.setPassword(factory.createTokenRequestPassword("password"));
    ClientTradingService service = new ClientTradingService();
    IClientTradingApi iClientTradingApi = 
    service.getBasicHttpBindingIClientTradingApi();
    TokenResponse response = 
    iClientTradingApi.getAuthenticationToken(tokenRequest);
    System.out.println(response);