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
<?xml version='1.0' encoding='UTF-8'?> <definitions name="Service" targetNamespace="urn:Service" xmlns:typens="urn:Service" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <!--acá construyo el mensaje SOAP--> <message name='getUser'> <part name='n1' type='xsd:string'/> <part name='n2' type='xsd:string' /> </message> <message name="getUserResponse"> <part name="getUserReturn" type="xsd:string"/> </message> <!--************************--> <!-- realiza el formateo --> <portType name="UserFacadePortType"> <operation name="getUser"> <input message="typens:getUser"/> <output message="typens:getUserResponse"/> </operation> </portType> <binding name="UserFacadeBinding" type="typens:UserFacadePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getUser"> <soap:operation soapAction="urn:UserFacadeAction"/> <input> <soap:body namespace="urn:Service" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body namespace="urn:Service" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <service name="ServiceService"> <port name="UserFacadePort" binding="typens:UserFacadeBinding"> <soap:address location="http://camisetascorrientes.com.ar/webservices/servidor.php"/> </port> </service> </definitions>
Mi Clase en Java para android:
delphi
package catequesis.android.tfa.syncro; import java.io.IOException; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapPrimitive; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import org.xmlpull.v1.XmlPullParserException; public class Sincronizacion { //Constantes para la invocacion del web service private static final String NAMESPACE = "http://camisetascorrientes.com.ar/webservices/service.wsdl"; private static final String URL="http://camisetascorrientes.com.ar/webservices/service.wsdl"; private static final String METHOD_NAME = "getUser"; private static final String SOAP_ACTION = "http://camisetascorrientes.com.ar/webservices/servidor.php"; private static SoapSerializationEnvelope envelope; private static SoapObject request; private static SoapPrimitive resultsRequestSOAP; public static void Sincronizar() { /*Se crea un objeto SoapObject para poder realizar la peticion para consumir el ws SOAP. El constructor recibe el namespace. Por lo regular el namespace es el dominio donde se encuentra el web service*/ request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("n1","3"); request.addProperty("n2","3"); /*Se crea un objeto SoapSerializationEnvelope para serealizar la peticion SOAP y permitir viajar el mensaje por la nube el constructor recibe la version de SOAP*/ envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); envelope.dotNet = false; //se asigna true para el caso de que el WS sea de dotNet //Se envuelve la peticion soap envelope.setOutputSoapObject(request); //Objeto que representa el modelo de transporte //Recibe la URL del ws HttpTransportSE transporte = new HttpTransportSE(URL); try { //Hace la llamada al ws transporte.call(SOAP_ACTION, envelope); //Se crea un objeto SoapPrimitive y se obtiene la respuesta //de la peticion resultsRequestSOAP = (SoapPrimitive)envelope.getResponse(); } catch (IOException e1) { e1.printStackTrace(); } catch (XmlPullParserException e2) { e2.printStackTrace(); } //Almacenamos el resultado en un String ya que lo que represa //el ws es una cadena json, representando una lista AndroidOS //de objetos del tipo String strJSON = resultsRequestSOAP.toString(); } }
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.