Pregunta

Tengo un problema mientras llamo al servicio web, tengo un servicio web .NET en el servidor y estoy usando KSOAP (KSOAP2-Android-Assembly-2.5.7-jar-with-dependencies.jar) en Android. Mientras ejecutaba el programa, obtuve una excepción de tiempo de ejecución llamada "org.ksoap2.Serialization.SoApapiMitive".

Intenté con las opciones que leí en el enlace: ¿Cómo llamar a un servicio web .NET de Android usando KSOAP2? y KSOAP2 Android - Excepción de clase de reparto (SoapObject) Pero nada me ayuda

Este mi código:

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

Donde sectorX es un parámetro de cadena que le doy a WS.

¡Probé el servicio web sin parámetros y funciona! El problema es cuando envío el parámetro ... supongo:/

¿Fue útil?

Solución

No hay excepción de ese nombre. Probablemente obtengas una excepción de la clase. Si depuras, probablemente encontrarás que tu respuesta es un SoapObject. Entonces usa GetProperty o GetAttribute o lo que sea. Si establece un punto de quiebre, podrá navegar por el gráfico de objetos y ensamblar su código de análisis manualmente.

Tal vez publique la Stacktrace en alguna parte ...

Otros consejos

Puedes intentar usar solo 'Objeto'En lugar de usar' SoapObject '. Esto funciona para mi. Espero eso ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top