是否可以通过ksoap2发送原始数组?

时间:2011-03-07 18:39:27

标签: java android web-services ksoap2

现在我的请求属性格式如何,它得到一个:

Cannot Serialize: [int, int, int]

错误。我不知道还有什么可以尝试的。我试过了:

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

这些都没有奏效。我得到的最接近的是Vector ..它似乎已经将Vector Objects序列化了,但是当我将它发送到Web Service方法时,我得到了错误:

java.lang.RuntimeError Mismatched types

是的,我已将方法的输入参数更改为Vector,并确保我已导入相同类型的Vector。

这是我的Web服务和我的应用程序,因此,我确实拥有全方位的服务。我愿意改变应用程序和WS的任何部分。如果您有任何想法,请告诉我。这就是我创建Web服务请求的方式:

这是一个完整的方法,我试图使用Vector in。

            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;
        }

我指望你!提前谢谢。

1 个答案:

答案 0 :(得分: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));
        }

只需创建一个字符串,其中包含您希望在Array中发送的所有值。我创建了数组,然后使用

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

然后让标记器按每个“,”分割值。

哪个效果很好。我现在要假设Ksoap2无法序列化任何数组类型。多谢你们! -Ninn