在我使用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
为什么我在那里得到空(我错过了什么)?我甚至提出要求吗?如何跟踪我是否真的成功了?
答案 0 :(得分:1)
我甚至提出要求吗?
不,你没有做请求,你只是在那里创建对象
检查生成的类中是否有两个名为ClientTradingService
和IClientTradingApi
的类,您必须使用这些类来执行请求。
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);