KSOAP:“org.ksoap2.serialization.SoapPrimitive”异常问题

时间:2011-07-25 15:37:49

标签: android ksoap2 android-ksoap2 ksoap

我在调用webservice时遇到问题,我在服务器中有一个.NET Web服务,我在Android中使用KSOAP(ksoap2-android-assembly-2.5.7-jar-with-dependencies.jar)。 在运行程序时,我得到了一个名为“org.ksoap2.serialization.SoapPrimitive”的运行时异常。

我尝试了我在链接中提到的选项:How to call a .NET Webservice from Android using KSOAP2?kSoap2 Android -- Cast Class Exception (SoapObject)但没有任何帮助我

这是我的代码:

try{
            //Conexión a Web Service
            SoapObject Solicitud = new SoapObject(NAMESPACE, METODO);

            PropertyInfo sector = new PropertyInfo();
            sector.setName("sector");
            sector.setValue(sectorX.toString());
            Solicitud.addProperty(sector);

            SoapSerializationEnvelope Envoltorio = new SoapSerializationEnvelope (SoapEnvelope.VER12);
            Envoltorio.dotNet = true;

            Envoltorio.setOutputSoapObject (Solicitud);

            HttpTransportSE TransporteHttp = new HttpTransportSE(URL);
            TransporteHttp.call (SOAP_ACTION, Envoltorio);

          //Obtencion de datos
            SoapObject resultado = (SoapObject)Envoltorio.getResponse();

            final String[] testValues = new String[resultado.getPropertyCount()];
            final Number[] serie = new Number[resultado.getPropertyCount()];

            for(int i= 0; i< resultado.getPropertyCount(); i++){
                String x = ""; 
                SoapObject wii = (SoapObject)resultado.getProperty(i);
                x += wii.getPropertyAsString(1);                
                testValues[i] = wii.getPropertyAsString(1);
                x.trim();
                serie[i]=Integer.parseInt(x);
            }

        ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, R.layout.lista_sectores, testValues);
        final ListView LstOpciones = (ListView) findViewById(R.id.LstOpciones);
        LstOpciones.setAdapter(adaptador);

        LstOpciones.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View itemClicked,
                    int position, long id) {
                // TODO Auto-generated method stub
                TextView textview = (TextView)itemClicked;
                String strText = textview.getText().toString(); 
                seleccion.setText("Seleccionado: " + strText);

            } catch (Exception e){
        txtMensaje.setText(e.getMessage());
            }

在sectorX中,它是我给WS的String参数。

我尝试了没有参数的Web服务并且有效! 问题是当我发送参数时...我猜:/

2 个答案:

答案 0 :(得分:1)

该名称没有例外。您可能会遇到类强制转换异常。如果你调试,你可能会发现你的响应是一个SoapObject。那么你使用getProperty或getAttribute或其他任何东西。如果设置了断点,您将能够浏览对象图并手动汇编解析代码。

也许在某处发布stacktrace ..

答案 1 :(得分:0)

您可以尝试仅使用“对象”而不是使用“SoapObject”。这个对我有用。希望它有所帮助。