android - soapobject - Accidente de aplicación en el dispositivo HTC M8 con OS Lollipop para llamada de servicio web
login soap android (3)
Aplicación que falla en Android Lollipop al llamar al servicio web con ksoap.
Por favor vea el registro de error
java.lang.NoSuchFieldError: No instance field headerOut of type [Lorg/kxml2/kdom/Element; in class Lorg/ksoap2/serialization/SoapSerializationEnvelope; or its superclasses (declaration of ''org.ksoap2.serialization.SoapSerializationEnvelope'' appears in /system/framework/wifi-service.jar)
at com.-----.---------.-----.----.services.AuthenticateUser.createHeader(AuthenticateUser.java:77)
at com.-----.---------.-----.----.services.AuthenticateUser.authenticateUser(AuthenticateUser.java:49)
at com.-----.---------.-----.----.services.---------GenericServiceThread.callWS(GenericServiceThread.java:219)
at com.-----.---------.-----.----.services.---------GenericServiceThread.invokeWebServiceApi(GenericServiceThread.java:106)
at com.-----.---------.-----.----.services.---------GenericServiceThread.run(GenericServiceThread.java:89)
He probado la misma aplicación en el emulador Nexus 4 de la versión 5.0 de Android y está funcionando bien.
Estoy usando el siguiente código para llamar a webservice
mHttpTransportSE = new AndroidHttpTransport (url);
mHttpTransportSE.debug = true; // this is optional, use it if you don''t
mHttpTransportSE.call(Configuration.COM_SOAP_ACTION_AUTHENTICATEUSER, envelope);
result = envelope.getResponse();
También cambié AndroidHttpTransport a HttpTransportSE, pero no estoy seguro de eso.
¿Este cambio resuelve mi problema?
¿Hay alguna otra solución para este problema?
Gracias de antemano.
El mismo problema aqui. Parece que HTC está usando su propio ksoap2. Consulte " https://code.google.com/p/ksoap2-android/issues/detail?id=205&can=1&start=200 ".
Lo resolví cambiando el nombre del paquete ksoap2 por ksoap2clone. No sé que la solución es buena, pero ahora está funcionando. Por favor comparte, si encuentras una mejor solución.
El archivo está aquí.
Tengo los mismos problemas (HTC M8), pero estoy usando ksoap2 3.4.0 jar con dependencias. Desde el stacktrace parecía obvio que alguien en HTC pensó que sería una buena idea incluir ksoap2. Lamentablemente, no pensaron en esto y cometieron el mismo error que Google con Apache Commons y HttpClient.
Para cambiar el nombre del paquete, utilicé jarjar y parece funcionar bien.
Para cualquiera que necesite una solución rápida, aquí están las reglas y la línea de comandos de Jarjar:
rules.txt
rule org.ksoap2.** org.repackage.ksoap2.@1
línea de comando
java -jar jarjar-1.4.jar process rules.txt ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar ksoap2-repackaged.jar