Java SOAP请求

时间:2017-06-01 18:26:40

标签: java soap wsdl

在我使用SOAP进行自我教育的过程中,我试图提出一个请求:
对于我的测试,我带了一个交易员的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

为什么我在那里得到空(我错过了什么)?我甚至提出要求吗?如何跟踪我是否真的成功了?

2 个答案:

答案 0 :(得分:1)

  

我甚至提出要求吗?

不,你没有做请求,你只是在那里创建对象

检查生成的类中是否有两个名为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 

要做一些其他请求,过程与上面的完全一样。

答案 1 :(得分:1)

如果您打开WSDL,那么在下面的部分中,您会找到 wsdl:portType name =" IClientTradingApi" 和         服务名称=" ClientTradingService" 。 你必须使用这些类来调用服务。 下面的代码可以帮助您。

    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);