Ответ 1
Я решил это, изменив имя пакета ksoap2 на ksoap2clone. Я не знаю, что решение хорошо, но теперь оно работает. Пожалуйста, поделитесь, если вы найдете лучшее решение.
Файл здесь.
Сбой приложения на Android Lollipop при вызове веб-службы с использованием ksoap.
См. журнал ошибок
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)
Я тестировал одно и то же приложение на эмуляторе Nexus 4 для Android версии 5.0 и отлично работаю.
Я использую ниже код для вызова 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();
Я также изменил AndroidHttpTransport на HttpTransportSE, но не уверен в этом.
Является ли это изменение решением моей проблемы?
Есть ли другое решение этой проблемы?
Спасибо заранее.
Я решил это, изменив имя пакета ksoap2 на ksoap2clone. Я не знаю, что решение хорошо, но теперь оно работает. Пожалуйста, поделитесь, если вы найдете лучшее решение.
Файл здесь.
Такая же проблема. Похоже, что HTC использует свой собственный ksoap2. Видеть " https://code.google.com/p/ksoap2-android/issues/detail?id=205&can=1&start=200"
У меня такие же проблемы (HTC M8), но я использую ksoap2 3.4.0 jar с зависимостями. Из stacktrace было очевидно, что кто-то в HTC подумал, что было бы неплохо включить ksoap2. К сожалению, они не думали об этом и совершили ту же ошибку, что и Google с Apache Commons и HttpClient.
Чтобы переименовать пакет, я использовал jarjar, и, похоже, он работает нормально.
Для тех, кто нуждается в быстром решении, вы найдете правила jarjar и командную строку:
Rules.txt
rule org.ksoap2.** [email protected]
Командная строка
java -jar jarjar-1.4.jar process rules.txt ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar ksoap2-repackaged.jar