Ir al contenido


Foto

Desarrollo de una Aplicacion Android consumiendo Webservice desarrollado en PHP


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 nico0689

nico0689

    Newbie

  • Miembros
  • Pip
  • 2 mensajes

Escrito 05 noviembre 2013 - 11:17

Buenas. yo estoy tratando de desarrollar una aplicación en android que hago consumo de un Webservices desarrollado en PHP y el wsdl, el mismo que se encuentra en el taller practico de la pagina de http://www.cesarcancino.com/

El Mismo no hace nada magnifico, solamente hace una suma simple con los dos parámetros que le envio y consumiendo desde PHP el mismo anda perfecto pero cuando intento consumir desde android estoy teniendo problemas. Les dejo todo lo que creo que puede ser necesario y si me pueden dar una mano. Si alguien ya desarrollo algo parecido me seria de gran ayuda para avanzar en esta etapa que me tiene un poco trancado.

Mi WebServices WSDL:



delphi
  1. <?xml version='1.0' encoding='UTF-8'?> 
  2. <definitions name="Service"
  3. targetNamespace="urn:Service"
  4. xmlns:typens="urn:Service" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  5. xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  6. xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  7. xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  8. xmlns="http://schemas.xmlsoap.org/wsdl/">
  9.       <!--acá construyo el mensaje SOAP-->
  10.     <message name='getUser'>
  11.   <part name='n1' type='xsd:string'/>
  12.   <part name='n2' type='xsd:string' />
  13. </message>
  14.  
  15.         <message name="getUserResponse">
  16.                 <part name="getUserReturn" type="xsd:string"/>
  17.         </message>
  18.     <!--************************-->
  19.  
  20. <!-- realiza el formateo -->
  21.         <portType name="UserFacadePortType">
  22.                 <operation name="getUser">
  23.                         <input message="typens:getUser"/>
  24.                         <output message="typens:getUserResponse"/>
  25.                 </operation>
  26.         </portType>
  27.         <binding name="UserFacadeBinding" type="typens:UserFacadePortType">
  28.  
  29.                 <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
  30.        
  31.         <operation name="getUser">
  32.                         <soap:operation soapAction="urn:UserFacadeAction"/>
  33.                         <input>
  34.                                 <soap:body namespace="urn:Service" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  35.                         </input>
  36.                         <output>
  37.                                 <soap:body namespace="urn:Service" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  38.                         </output>
  39.                 </operation>
  40.         </binding>
  41. <service name="ServiceService">
  42.                 <port name="UserFacadePort" binding="typens:UserFacadeBinding">
  43.                         <soap:address location="http://camisetascorrientes.com.ar/webservices/servidor.php"/>
  44.                 </port>
  45.         </service>
  46. </definitions>




Mi Clase en Java para android:



delphi
  1. package catequesis.android.tfa.syncro;
  2.  
  3. import java.io.IOException;
  4.  
  5. import org.ksoap2.SoapEnvelope;
  6. import org.ksoap2.serialization.SoapObject;
  7. import org.ksoap2.serialization.SoapPrimitive;
  8. import org.ksoap2.serialization.SoapSerializationEnvelope;
  9. import org.ksoap2.transport.HttpTransportSE;
  10. import org.xmlpull.v1.XmlPullParserException;
  11.  
  12. public class Sincronizacion
  13. {
  14. //Constantes para la invocacion del web service
  15. private static final String NAMESPACE = "http://camisetascorrientes.com.ar/webservices/service.wsdl";
  16. private static final String URL="http://camisetascorrientes.com.ar/webservices/service.wsdl";
  17. private static final String METHOD_NAME = "getUser";
  18. private static final String SOAP_ACTION = "http://camisetascorrientes.com.ar/webservices/servidor.php";
  19.  
  20. private static SoapSerializationEnvelope envelope;
  21. private static SoapObject request;
  22. private static SoapPrimitive resultsRequestSOAP;
  23.  
  24. public static void Sincronizar()
  25. {
  26. /*Se crea un objeto SoapObject para poder realizar la peticion
  27. para consumir el ws SOAP. El constructor recibe
  28. el namespace. Por lo regular el namespace es el dominio
  29. donde se encuentra el web service*/
  30.  
  31. request = new SoapObject(NAMESPACE, METHOD_NAME);
  32. request.addProperty("n1","3");
  33. request.addProperty("n2","3");
  34.  
  35. /*Se crea un objeto SoapSerializationEnvelope para serealizar la
  36. peticion SOAP y permitir viajar el mensaje por la nube
  37. el constructor recibe la version de SOAP*/
  38.  
  39. envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
  40. envelope.dotNet = false; //se asigna true para el caso de que el WS sea de dotNet
  41.  
  42. //Se envuelve la peticion soap
  43. envelope.setOutputSoapObject(request);
  44.  
  45. //Objeto que representa el modelo de transporte
  46. //Recibe la URL del ws
  47. HttpTransportSE transporte = new HttpTransportSE(URL);
  48. try
  49. {
  50. //Hace la llamada al ws
  51. transporte.call(SOAP_ACTION, envelope);
  52.  
  53. //Se crea un objeto SoapPrimitive y se obtiene la respuesta
  54. //de la peticion
  55. resultsRequestSOAP = (SoapPrimitive)envelope.getResponse();
  56.  
  57. }
  58. catch (IOException e1)
  59. {
  60. e1.printStackTrace();
  61. }
  62. catch (XmlPullParserException e2)
  63. {
  64. e2.printStackTrace();
  65. }
  66.  
  67.  
  68. //Almacenamos el resultado en un String ya que lo que represa
  69. //el ws es una cadena json, representando una lista AndroidOS
  70. //de objetos del tipo
  71. String  strJSON = resultsRequestSOAP.toString();
  72. }
  73. }




Bueno, como podes trato de consumir este webservices desarrollado en PHP pero estoy teniendo un problema que no estoy pudiendo resolverlo y es que me tira este error en el segundo catch.

org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlso...elope/}Envelope (position:START_TAG <{http://www.w3.org/20...chema}xs:schema targetNamespace='http://schemas.xmlsoap.org/soap/envelope/'>@4:50 in java.io.InputStreamReader@45f92068)


Estoy mas que seguro que algo esta mal en la forma del XML, pero ya trate de muchas formas y no consigo solucionarlo. Si alguien ya paso por esto o me puede dar una mano con gusto se agradeceria.











  • 0




IP.Board spam blocked by CleanTalk.