KSOAP: "org.ksoap2.serialization.soapiMition" Problema de excepción
-
26-10-2019 - |
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:/
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.