¿Cómo puedo lanzar o deserializar SoapObject a mi objeto?
Tengo un WebService .Net que devuelve un objeto serializado simple.
Tengo el siguiente código para obtener respuesta de mi .Net webservice. ¿Cómo puedo deserializar XML devuelto a mi objeto?
- Android, Ksoap, webService
- AsyncTask HttpPost ejecutar falla en 3G, pero funciona en Wifi
- Serialice una matriz de ints para enviar usando KSOAP2
- Ksoap2 casting getResponse ()
- ¿Cómo pasar el parámetro a un webservice usando ksoap2?
Quiero devolver MyObject en lugar de SoapPrimitive.
private static SoapPrimitive callWebServiceMethod(String url, String namespace, String methodName, HashMap<String, Object> parameters, String soapAction) throws Exception { Log.i("WebService", "URL: " + url); Log.i("WebService", "MethodName: " + methodName); URL myurl = new URL(url); URLConnection connection = myurl.openConnection(); connection.setConnectTimeout(20 * 1000); HttpURLConnection httpConnection = (HttpURLConnection) connection; int responseCode = httpConnection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { httpConnection.disconnect(); SoapObject request = new SoapObject(namespace, methodName); if (parameters != null) { String[] keys = new String[0]; keys = (String[]) parameters.keySet().toArray(keys); Object[] vals = (Object[]) parameters.values().toArray(); for (int i = 0; i < parameters.size(); i++) { request.addProperty(keys[i], vals[i]); Log.i("WebService", keys[i] + ": " + vals[i]); } } SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE(url, TimeOutInSeconds * 1000); androidHttpTransport.call(soapAction, envelope); return (SoapPrimitive) envelope.getResponse(); } else { httpConnection.disconnect(); throw new Exception( "Http Error code: " + String.valueOf(responseCode)); } }
- SOapObject emite Android
- Dónde ver el XML generado (KSOAP2)
- establece codificación utf-8 para ksoap2 en android
- Usando addMapping sin el atributo "i: type =" en ksoap2 para android
- KSoap-Android \ JCIFS envía una entrada HTTP vacía
- "AndroidHttpTransport no se puede resolver a un tipo" error en ksoap2
- Cómo consumir servicios WCF dependientes de la sesión usando Ksoap2-Android
- Excepción al usar ksoap2-android
No he entendido bien, pero creo que desea que su método debe devolver objeto de su clase personalizada en lugar de objeto SOAP.
Así que he hecho eso en mi función similar como esta ..
SoapObject soapObject = (SoapObject) envelope.getResponse(); // SOAP Object realTimeUtil = new RealTimeUtil(); // CUSTOM Object of My Class if(soapObject.hasProperty("diffgram")) soapObject = (SoapObject) soapObject.getProperty("diffgram"); if(soapObject.hasProperty(clientName)){ soapObject = (SoapObject) soapObject.getProperty(clientName); for (int i = 0 ; i<soapObject.getPropertyCount(); i++){ if(soapObject.hasProperty(clientName)){ SoapObject soapObject1 = (SoapObject) soapObject.getProperty(i); if(soapObject1.hasProperty("Site")){ String site = soapObject1.getProperty("Site").toString(); String dateTime = soapObject1.getProperty("DateTime").toString(); String clicks =soapObject1.getProperty("Clicks").toString(); String orders = soapObject1.getProperty("Orders").toString(); String reveneue = soapObject1.getProperty("Revenue").toString(); String items = soapObject1.getProperty("Items").toString(); realTimeUtil.setSite(site); realTimeUtil.setClicks(clicks); realTimeUtil.setDateTime(dateTime); realTimeUtil.setOrders(orders); realTimeUtil.setRevenue(reveneue); realTimeUtil.setItem(items); } } } } return realTimeUtil;
RealtimeUTil es una clase personalizada en mi aplicación con pocas variables y es métodos getter-setter.
- ¿Cuál es la forma más precisa de saber si el visitante de una aplicación web móvil es único?
- Problema de filtro AutoCompleteTextView