Excepción de puntero nulo que hace difícil pasar un arreglo usando ksoap

Tengo matriz definida como esto:

ArrayList<String> items = new ArrayList<String>(); 

He llenado ese arreglo ahora y deseo enviarlo vía un servicio de la tela a mi base de datos alejada.

Aquí está el método en mi código de Android que hace el trabajo ksoap

  public String[] call2() { SoapPrimitive responsesdata = null; SoapObject request = new SoapObject(namespace, method_NAME); request.addProperty("names",items); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE(url); androidHttpTransport.debug = true; try { androidHttpTransport.call(soap_ACTION, envelope); //responsesdata = (SoapPrimitive) envelope.getResponse(); SoapObject result = (SoapObject)envelope.bodyIn; if(result != null) { System.out.println("SOAP response:\n\n" + result.getProperty(0).toString()); } System.out.println(" --- response ---- " + responsesdata); } catch (SocketException ex) { ex.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } System.out.println( " ----" + responsesdata ); String serviceResponse= responsesdata .toString(); System.out.println(serviceResponse); String[] temp; String delimiter = ","; temp= serviceResponse.split(delimiter); return temp; } 

Sin embargo, cuando ejecuto mi código estoy recibiendo Null Pointer Exception ver en logcat a continuación:

  11-10 15:22:50.496: WARN/System.err(295): java.lang.RuntimeException: Cannot serialize: [] 11-10 15:22:50.496: WARN/System.err(295): at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:629) 11-10 15:22:50.505: WARN/System.err(295): at org.ksoap2.serialization.SoapSerializationEnvelope.writeProperty(SoapSerializationEnvelope.java:613) 11-10 15:22:50.515: WARN/System.err(295): at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:582) 11-10 15:22:50.515: WARN/System.err(295): at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:566) 11-10 15:22:50.515: WARN/System.err(295): at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:623) 11-10 15:22:50.515: WARN/System.err(295): at org.ksoap2.serialization.SoapSerializationEnvelope.writeBody(SoapSerializationEnvelope.java:547) 11-10 15:22:50.515: WARN/System.err(295): at org.ksoap2.SoapEnvelope.write(SoapEnvelope.java:192) 11-10 15:22:50.525: WARN/System.err(295): at org.ksoap2.transport.Transport.createRequestData(Transport.java:74) 11-10 15:22:50.555: INFO/System.out(295): ----null 11-10 15:22:50.565: DEBUG/AndroidRuntime(295): Shutting down VM 11-10 15:22:50.565: WARN/dalvikvm(295): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 11-10 15:22:50.586: ERROR/AndroidRuntime(295): FATAL EXCEPTION: main 11-10 15:22:50.586: ERROR/AndroidRuntime(295): java.lang.NullPointerException 11-10 15:22:50.586: ERROR/AndroidRuntime(295): at com.example.display.call2(display.java:200) 11-10 15:22:50.586: ERROR/AndroidRuntime(295): at com.example.display$3.onClick(display.java:145) 11-10 15:22:50.586: ERROR/AndroidRuntime(295): at android.view.View.performClick(View.java:2408) 

Mi código de servicio web:

  public class Service1 : System.Web.Services.WebService { [WebMethod] public String getnames(String[] values) { try { using (SqlConnection myConnection = new SqlConnection(@"Data S ource=.\SQLEXPRESS;Initial Catalog=student;User ID=sa;Password=123")) { int count = 1; int rows = 0; myConnection.Open(); foreach (string student in values) { count++; using (SqlCommand myCommand = new SqlCommand()) { myCommand.Connection = myConnection; myCommand.CommandText = "insert into record values(@pCount, @pStudent)"; SqlParameter param = myCommand.CreateParameter(); param.ParameterName = "@pCount"; param.Value = count; myCommand.Parameters.Add(param); param = myCommand.CreateParameter(); param.ParameterName = "@pSudent"; param.Value = student; rows = myCommand.ExecuteNonQuery(); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); return "an error occured"; } return "success"; } } } 

Se trata de un problema conocido con la biblioteca KSOAP2 para Android , que en este momento simplemente no admite matrices. La descripción del problema está aquí:

http://code.google.com/p/ksoap2-android/issues/detail?id=19

Un parche, una solución y un ejemplo de terceros se pueden encontrar aquí:

http://people.unica.it/bart/ksoap2-patch/

Mira en estos enlaces, Puedes encontrar tu respuesta sobre eso.

Gracias.

Consulte este enlace para comprender cómo enviar arrays y pojo al servicio web usando ksoap2.

http://code.google.com/p/ksoap2-android/wiki/CodingTipsAndTricks .

  • cómo extender el WebView correctamente?
  • ¿Cómo puedo abrir una aplicación de mi navegador web (Chrome) en Android? ¿Qué tengo que ver con el enlace A Href?
  • Deserialize / unmarshal lista genérica de XML a la lista en Android
  • Cómo deshabilitar el desplazamiento horizontal en la vista web de Android
  • Android WebView no sólo de vídeo audio
  • Notificación de empuje en Web móvil
  • Emular archivos de hosts en Android no enraizado
  • Android Fatal señal 11 (SIGSEGV) en 0x00000040 (código = 1) Error
  • Android WebView: Imagen local grande no cargada / mostrada
  • ¿Cómo generar enlace waze meetup con fallback web?
  • Problema con el zoom de texto de WebView en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.