with consumir consume android string soap casting ksoap2

android - consumir - ¿Cómo puedo lanzar un String a un SoapObject en ksoap2?



ksoap2 android gradle (3)

Digamos que someObject es un objeto con los miembros CategoryId, Name, Description. Si obtiene estos miembros de objeto en la respuesta, puede guardarlos en algún objeto haciendo esto:

SoapObject response = (SoapObject)envelope.getResponse(); someObject.CategoryId = Integer.parseInt(response.getProperty(0).toString()); someObject.Name = response.getProperty(1).toString(); someObject.Description = response.getProperty(2).toString();

EDITAR:

Ok, veo el problema ahora.

Para obtener un objeto social, solo la forma en que puedo pensar es:

1) analizar la cadena almacenada 2) almacenar todos los campos de datos en variables locales

Parse stored string: start loop int x = something string y = something double z = something end loop

3) crea un nuevo objeto usando las variables

someObject.fieldx = x someObject.fieldy = y someObject.fieldz = z

4) crear un nuevo objeto

SoapObject sp_Object = new SoapObject(NAMESPACE, METHOD_NAME);

5) crea una información de propiedad usando el objeto en el paso 3

PropertyInfo prop = new PropertyInfo(); prop.setNamespace(NAMESPACE); prop.setType(someObject.getClass()); prop.setValue(someObject);

6) agregue la info de propiedad al objeto soa en el paso 4

sp_Object.addProperty(prop);

Luego puede usar el objeto sp_Object de soapobject para su analizador.

En mi aplicación de Android uso ksoap2 para la comunicación con un servidor. Descargo una cierta estructura compleja de información deportiva a través de una solicitud de jabón y la analizo más adelante en mi programa.

Lo que quiero hacer es de alguna manera "guardar" esta estructura compleja para poder analizarla más tarde cuando toda la información en esa estructura sea definitiva y no cambie más para poder mostrarla sin llamar nuevamente al servicio web.

Llegué tan lejos que puedo convertir toda la estructura en una cadena con el método toString () de la clase SoapObject para poder guardarlo en las preferencias Compartidas de la aplicación.

PERO: Para analizar la cadena con mi analizador que uso cuando descargo los datos directamente desde el servidor web, lo necesito como un SoapObject. Intenté algo como esto:

SoapObject soapObj = (SoapObject) dataAsStringFromSharedPrefs;

Pero no puedo lanzar una cadena a un SoapObject de esa manera.


Esto aquí parece funcionar:

public SoapObject createSoapObjectFromSoapObjectString(String soapObjectString) { // Create a SoapSerializationEnvelope with some config SoapSerializationEnvelope env = new SoapSerializationEnvelope(SoapEnvelope.VER11); env.dotNet = true; // Set your string as output env.setOutputSoapObject(soapObjectString); // Get response SoapObject so = (SoapObject) env.getResponse(); return so; }


Espero que esto funcione bien para convertir una cadena XML de jabón en un SoapObject

public SoapObject string2SoapObject(byte[] bytes) { SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER12); SoapObject soap=null; try { ByteArrayInputStream inputStream=new ByteArrayInputStream(bytes); XmlPullParser p= Xml.newPullParser(); p.setInput(inputStream, "UTF8"); envelope.parse(p); soap=(SoapObject)envelope.bodyIn; } catch (Exception e) { e.printStackTrace(); } return soap; }