2017-06-01 201 views
0

在我使用SOAP进行自我教育的过程中,我试图提出请求:
1.对于我的测试,我使用了一个交易者的API wsdl
2.在maven-jaxb2-plugin生成的java类的帮助下。
3.其他有如:ObjectFactory, TokenRequest, TokenResponse, GetInfoRequestJava 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和因为我觉得我做的请求作出新的对象?我甚至提出要求吗?我如何追踪我是否真的做到了?

回答

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 

要做一些其他的请求过程是完全一样的上述过程。

+0

我明白了。问题是我没有那些生成的ClientTradingApi类。这可能是插件生成器的问题吗? – IgorZ

+1

@IgorZ有时候它们不会在同一个包中生成 –

+0

真的,maven插件不提供该服务。我带走了wsimport.exe -keep -verbose http://...wsdl,并使ClientTradingService.java成为其他人之一。非常感谢你。 – IgorZ

1

如果您在下面的部分打开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);