2011-03-07 66 views
0

現在不管我如何格式化我的請求屬性,它獲得:是否可以通過ksoap2發送一個基元數組?

Cannot Serialize: [int, int, int] 

錯誤。我不知道還有什麼可以嘗試的。我試過了:

ArrayList<Integer>, int[], Vector<Integer>, List<Integer> 

這些都沒有奏效。我得到的最接近的一次是矢量。它似乎已經序列化的矢量對象很好,但是當我將它發送到Web服務方法,我得到了錯誤:

java.lang.RuntimeError Mismatched types 

是的,我已經改變了向Vector輸入參數,並確保我已導入相同類型的向量。

這是我的Web服務和我的應用程序,所以我確實有它的全部範圍。我願意更改應用程序和WS的任何部分。如果您有任何想法,請讓我知道。這是我如何創建我的Web服務請求:

這是我試圖使用Vector在全法

  public ArrayList<Contacts> getLocationslist(Vector<Integer> list){ 

      ArrayList<Contacts> contacts = new ArrayList<Contacts>(); 
      String SOAP_ACTION = "urn:getLocationsList"; 
      String METHOD_NAME = "getLocationsList"; 

      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
      request.addProperty("arg0", list); 

      SoapSerializationEnvelope envelope = 
       new SoapSerializationEnvelope(SoapEnvelope.VER11); 

      envelope.setOutputSoapObject(request); 
      HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

      try { 
       androidHttpTransport.call(SOAP_ACTION, envelope);     
       int i = 0; 
       SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn; 
       while (i < resultsRequestSOAP.getPropertyCount()){ 

       Contacts cont = new Contacts(); 

       try { 
         Ksoap2ResultParser.parseBusinessObject(resultsRequestSOAP.getProperty(i).toString(), cont); 

        } catch (NumberFormatException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IllegalArgumentException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IllegalAccessException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (InstantiationException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       contacts.add(cont); 
       i = i + 1; 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      return contacts; 
     } 

我對你這麼計數!提前致謝。

回答

0

經過幾次嘗試之後,我剛剛使用了String Tokenizer。

  ArrayList<Integer> clist = new ArrayList<Integer>(); 
     StringTokenizer st = new StringTokenizer(list); 

     while(st.hasMoreTokens()){ 
      String id = st.nextToken(","); 
      clist.add(Integer.parseInt(id)); 
     } 

只需創建一個字符串,其中包含您希望在數組中發送的所有值。我創建了陣列,然後使用

for(Int i : intsList){ 
String list = list + i + ","; 
} 

然後讓令牌處理器按每個「,」分割值。

哪個效果不錯。我現在假設Ksoap2不能序列化任何數組類型。多謝你們! -Ninn

相關問題