2017-06-01 198 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);