2016-09-27 66 views
0

嗨,我正在爲肥皂調用一個java項目。我從服務器提取SOAP WSDL文件並將其包含在我的eclipse java項目中。在用於從服務器生成令牌的soap方法之一中,我需要將用戶名和密碼傳遞給名爲logon的soap方法,然後返回會話令牌登錄方法使用「mode = Mode.OUT」和一些持有者元素返回會話令牌。查詢\是從肥皂調用獲得價值

 String sessiontoken =""; 
     String strLogin="admin"; 
     String strPassword="password"; 
     Element elemParameters= null ; 
     Holder<String> pstrSessionToken = new Holder<String>(); 
     Holder<Element> pSessionInfo = new Holder<Element>(); 
     Holder<String> pstrSecurityToken = new Holder<String>(); 

token_soap.logon(sessiontoken, strLogin, strPassword, elemParameters, pstrSessionToken, pSessionInfo, pstrSecurityToken); 

如果我寫這樣的代碼:

String res = token_soap.logon(sessiontoken, strLogin, strPassword, elemParameters, pstrSessionToken, pSessionInfo, pstrSecurityToken); 

則顯示錯誤「類型不匹配:不能從虛空轉換爲字符串」。我無法收集它將返回的pstrSessionToken的值。

我完整的代碼是:

public static String s_tokencall(){ 
        XtkSession token = new XtkSession(); 
     SessionMethodsSoap token_soap = token.getSessionMethodsSoap(); 

     String sessiontoken =""; 
     String strLogin="admin"; 
     String strPassword="password"; 
     Element elemParameters= null ; 
     Holder<String> pstrSessionToken = new Holder<String>(); 
     Holder<Element> pSessionInfo = new Holder<Element>(); 
     Holder<String> pstrSecurityToken = new Holder<String>(); 
     String res = token_soap.logon(sessiontoken, strLogin, strPassword, elemParameters, pstrSessionToken, pSessionInfo, pstrSecurityToken); 
     System.out.println(pstrSecurityToken); 
     return null;} 

回答

0

它現在正在工作,我們需要用不同的方法聲明String持有者,並且登錄函數將更新調用中的String變量。這個函數不會返回任何東西,但會在執行時更新變量。

XtkSession token = new XtkSession(); 
      SessionMethodsSoap token_soap = token.getSessionMethodsSoap();   
      String sessiontoken = ""; 
      String strLogin = "admin"; 
      String strPassword = "password"; 
      xtk.session.Element elemParameters = new xtk.session.Element(); 
      Holder<String> pstrSessionToken = new Holder<String>(); 
      Holder<xtk.session.Element> pSessionInfo = null; 
      Holder<String> pstrSecurityToken = new Holder<String>(); 

      token_soap.logon(sessiontoken, strLogin, strPassword, elemParameters, pstrSessionToken, pSessionInfo, pstrSecurityToken); 

您將在「pstrSessionToken.value」獲得的價值

0

你的方法,其中登錄時可能不會返回一個字符串值。

+0

是它調用類「LogonResponse」返回值。 –

+0

請修改您的帖子並提供完整的代碼 – enigma969

+0

完整的代碼發佈。 –