2013-08-31 32 views
0

我有一個返回ArrayList<String[]>的SOAP webservice服務。當我從客戶端調用它時,eclipse說我服務不返回ArrayList<String[]>,但是List<StringArray>在SOAP客戶端中將StringArray轉換爲String []

StringArray似乎不是Java數據類型,我會知道如何將它轉換爲String[]並從中提取數據。

這是客戶端導入的文件包含方法檢索數據:

@WebService(name = "Functions", targetNamespace = "http://example.com/") 
@XmlSeeAlso({ 
    ObjectFactory.class 
}) 
public interface Functions { 


/** 
* 
* @return 
*  returns java.util.List<com.example.StringArray> 
*/ 
@WebMethod 
@WebResult(targetNamespace = "") 
@RequestWrapper(localName = "getData", targetNamespace = "http://example.com/", className = "com.example.GetData") 
@ResponseWrapper(localName = "getDataResponse", targetNamespace = "http://example.com/", className = "com.example.GetDataResponse") 
@Action(input = "http://example.com/Functions/getDataRequest", output = "http://example.com/Functions/getDataResponse") 
public List<String[]> getData(); 

這是該函數的聲明方式對服務器:

@WebMethod 
public ArrayList<String[]> getData() { 
    // invoked by android app 
    dataStore = DatastoreServiceFactory.getDatastoreService(); 
    ArrayList<Entity> list = (ArrayList<Entity>) dataStore.prepare(query).asList(FetchOptions.Builder.withLimit(100)); 

    if (!list.isEmpty()) { 
     ArrayList<String[]> res=new ArrayList<String[]>(); 
     String[] to_add; 
     // convert entity into strings 
     for (Entity current : list) { 
      to_add=new String[3]; 
      to_add[0]=String.valueOf(current.getProperty(TEMP_ROW)); 
      to_add[1]=String.valueOf(current.getProperty(HUM_ROW)); 
      to_add[2]=String.valueOf(current.getProperty(DATE_ROW)); 

      res.add(to_add); 
     } 
     return res; 
    } 

    return null; 
} 
+0

我想你應該提供一些代碼。 –

+0

從我的項目中添加了代碼 – giozh

回答

0

可以使用toArray()方法從Collection

List<String> myList = myClient.getData(); 
String[] myArray = myList.toArray(); 
+0

也許我自己解釋錯了。在服務器上聲明的服務返回ArrayList ,而不是ArrayList 。我不能在名單變量上調用myClient.getData,因爲eclipse告訴我getData返回列表 giozh

+0

嗯,好的錯過了那個細節。但是,服務器上的實現並不重要。它是一個Web服務,數據作爲soap XML /請求發送。所有重要的事情都是你的客戶正在做的事情。傳送清單列表聽起來並不理想。你爲什麼不發送特定的類型? –

+0

,因爲該方法從數據存儲檢索數據列表,並且每個String []包含單個檢索到的實體的所有屬性。 – giozh