Java SOAP请求
问题描述:
在我使用SOAP进行自我教育的过程中,我试图提出请求:
1.对于我的测试,我使用了一个交易者的API wsdl。
2.在maven-jaxb2-plugin
生成的java类的帮助下。
3.其他有如:ObjectFactory, TokenRequest, TokenResponse, GetInfoRequest
。Java SOAP请求
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
为什么我得到空在那里(我已错过了一些东西):
4.我通过ObjectFactory
和因为我觉得我做的请求作出新的对象?我甚至提出要求吗?我如何追踪我是否真的做到了?
答
我甚至提出要求吗?
不,你是不是做的请求,你就在那边
检查您生成的类两类称为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
要做一些其他的请求过程是完全一样的上述过程。
答
如果您在下面的部分打开WSDL,那么你会发现WSDL:portType的名称= “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);
我明白了。问题是我没有那些生成的ClientTradingApi类。这可能是插件生成器的问题吗? – IgorZ
@IgorZ有时候它们不会在同一个包中生成 –
真的,maven插件不提供该服务。我带走了wsimport.exe -keep -verbose http://...wsdl,并使ClientTradingService.java成为其他人之一。非常感谢你。 – IgorZ