2016-02-17 3 views
0

В одном из моих Android-проектов я использовал библиотеку ksoap2 для использования мыльного веб-сервиса. У меня есть требование предварительно загрузить некоторые данные, которые можно использовать для отображения, когда пользователь отключен. Для этого я использовал для хранения ответа от мыльной веб-службы на базу данных SQLite в виде строки. Мне нужно найти способ восстановления SoapObject (объекта ответа) из String, хранящегося в базе данных sqlite.Android: Construct SoapObject из строки

Я пробовал утвержденное решение, упомянутое на следующей странице, передавая ранее сохраненную строку ответа в базе данных по методу createSoapObjectFromSoapObjectString(). он выдает исключение, поскольку env.getResponse() имеет значение null.

How can I cast a String to a SoapObject in ksoap2?

Я также попытался преобразовать ранее сохраненную строку ответа в базе данных для SoapObject непосредственно по телефону следующее заявление, но оно также бросает ClassCastException исключение

SoapObject so = (SoapObject) (Object) soapObjectString;

Ниже приведен пример ответа string, что я хочу построить SoapObject из него.()

anyType{PatientGroupDetailDC=anyType{HasOverDueTask=No; HasUpComingTask=No; PatientReferenceNo=13; PatientName=02dvwZq8cMhx3bCH96iSMA==; NRICNumber=Gk1dfdkzJAvLJifFdBh2XA4aA==;}; PatientGroupDetailDC=anyType{HasOverDueTask=No; HasUpComingTask=No; PatientReferenceNo=TP00212011; PatientName=5OerjU0weryq/rcPR1QkxlEg==; NRICNumber=d3gFkmVkJqbGdMaO6efdVkIcQ==;}; }

+0

Как вы это "SoapObject" выше? Это похоже на отладочный вывод - возможно, вы использовали 'toString()'? Вместо этого вам понадобится ответ XML от службы. Альтернативно, вы можете сериализовать свои объекты ... – 323go

+0

Да, я использовал 'toString()' для получения вышеуказанного ответа. – bashahul

+0

Если я могу построить SoapObject из String. Я могу использовать существующий код без особых изменений. – bashahul

ответ

-1

Попробуйте этот код,

SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     Object retObj = soapEnvelope.bodyIn; //OR// Object retObj = "your string response from database"; 
     SoapObject result = (SoapObject) retObj; 
     if (result.getPropertyCount() > 0) { 
      Object obj = result.getProperty(0); 
     } 
+0

Я использовал приведенный выше код после замены строки 2 как ниже 'Объект retObj = soapObjectString; // строковый ответ из базы данных В приведенной ниже строке он генерирует исключительное исключение класса (от String до SoapObject) 'SoapObject result = (SoapObject) retObj;' – bashahul

Смежные вопросы