Professional Documents
Culture Documents
09 4 captures
Ultimas Noticias:
WebCarreno.org !!
• Inicio
• Manuales
• Tutoriales
• E-Libros
• Autentificación
Recuérdeme
Visto: 5928
Compartir
• Imprimir
• Correo electrónico
Primero para el consumo de un web services debemos identificar si el servicio web está basado en REST o
SOAP, en este caso para el web service que nos da el SRI, está basado en SOAP, por lo cual debemos de
trabajar con estructura XML para el manejo de datos.
El primer paso para continuar con este tutorial, se deberá tener la factura o el comprobante ya firmado, eso
se encuentra en el tutorial SRI Firma Digital XadES-BES, luego de tener el XML firmado nosotros
procederemos a enviar este XML al web services es de donde empezaremos el tutorial.
En este tutorial se a aplicado una metodología muy práctica para trabajar con el web services, por lo cual no
se a utilizado ningún gestor o librerías de terceros, un código muy sencillo y limpio para incorporar a
nuestro proyecto.
Pasos:
Instalar el SoapUI: Es una magnifica herramienta la cual nos permite testear en tiempo real los web services,
en donde podremos enviar y recibir parametros para probar el funcionamiento del mismo.
Rutas:
Para realizar las pruebas de nuestro web services utilizamos las siguientes rutas en donde se encuentran
nuestros archivos WDSL:
https://celcer.sri.gob.ec/comprobantes-electronicos-ws/RecepcionComprobantes?wsdl
https://celcer.sri.gob.ec/comprobantes-electronicos-ws/AutorizacionComprobantes?wsdl
https://cel.sri.gob.ec/comprobantes-electronicos-ws/RecepcionComprobantes?wsdl
https://cel.sri.gob.ec/comprobantes-electronicos-ws/AutorizacionComprobantes?wsdl
Está función toma la ruta del documento firmado y lo convierte en un objeto Document, esto es para que
pueda ser manejado más rápidamente en la ejecución de nuestro programa, lo único que nos solicita como
parámetro es la ruta del documento.
Esta función convierte en String el objeto Document, para que podamos obtener parámetros, o escribir
nuevos argumentos. A está función enviamos como parámetro un objeto Document.
return null;
}
Esta función convierte en Base64 el objeto Document que contendría el XML, proceso importante para el
envío y recepción de datos en un Web Services
return bytesEncoded;
}
Esta función obtiene los datos jerarquicamente desde un archivo XML, en este caso se encontraría embebido
en un objeto Document, adicional mente se encuentran dos parámetros que debemos de ingresar el rootNodo y
el infoNodo el cual nos devolverá la data dentro de las etiquetas, por ejemplo:
<mensaje>
<data>hola</data>
</mensaje>
En este caso el root es <mensaje> y el nodo a obtener es <data> nos devolverá como String: hola, esa es la
manera de funcionar de la función getNodes(), a continuación.
if(studentList.getLength()>0){
Node node = studentList.item(0);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element e = (Element) node;
NodeList nodeList = e.getElementsByTagName(infoNodo);
resultNodo = nodeList.item(0).getChildNodes().item(0).getNodeValue();
}}
return resultNodo;
}
Esta función podría inclusive reemplazar a la función anterior y los que hace es coleccionar de una
estructura XML repetitiva el último tag, esto se puede aprender de mejor manera en el proceso.
//Ejemplo:
//RespuestaAutorizacionComprobante/autorizaciones/autorizacion[last()]/estado
String pathFull = pathLevelXML + nodo;
Esta función es opcional y nos setea una dirección proxy cuando la salida en nuestra empresa no es directa si
no a través de un servidor Proxy. Esta función debe de ser tomada muy en cuenta si no, no podremos enviar
ni recibir peticiones debido a que nuestro programa busca la configuración de red por defecto, osea Internet
sin proxys.
return proxy;
Esta función enviará al servicio web de forma parametrizada los comprobantes que queremos enviar al web
services para que pueda recibir el comprobante, como se puede observar es una estructura basada en SOAP a
la cual se le envian los parámetros en el tag <ec:validarComprobante></ec:validarComprobante>, está es la forma como el
software SoapUI, lo hace
return xml;
}
Esta sería la función más importante debido que es la q consume el web services del SRI para el envío de
comprobantes para su posterior autorización, la cual la explicaremos paso a paso:
Parametros de entrada:
String urlWebServices: Será la dirección de consumo de nuestro servicio Web en este caso para el
ambiente de prueba de recepción de comprobantes sería: "https://celcer.sri.gob.ec/comprobantes-electronicos-
ws/RecepcionComprobantes?wsdl"
String host: La ruta del servidor Host en donde se hace el envío: "celcer.sri.gob.ec"
String getEncodeXML: Antes de ingresar esta variable se tienen que correr una serie de funciones, esta
variable es la que recibe el XML codificado para ser enviado, para eso se sigue el siguiente procedimiento:
1.- Escoger el documento XML y transformarlo en Document con la función ya explicada getDoc(Ruta).
2.- Escoger la función converBase64(Document), la cual nos pide como parámetro un objeto tipo Document, que lo obtuvimos con la
función anterior, esta función codifica el XML de manera que la data pueda ser enviada hacia el servicio web.
3.- Escoger la función formatSendPost(String), el cual recibirá la función que arrojo como resultado converBase64() de tipo String, esta función
contiene el XML ya codificado y este resultado será la variable getEncodeXML de tipo string.
Proxy proxy: Como se explico anteriormente en está variable se ingresan los parametros de su proxy en
caso tengan uno, si no tienen entonces envíen un valor nulo, la función que se utiliza es: setProxy("Dirección IP",
Puerto) devuelve variable tipo proxy.
El código a continuación de la función que envía todos estos parámetros al web services:
try {
con.setRequestMethod(method);
con.setRequestProperty("Content-type", "text/xml; charset=utf-8");
con.setRequestProperty("SOAPAction", "");
con.setRequestProperty("Host", host);
getEstadoPostSoap(xml_utilidades.convertStringToDocument(sb.toString()),
"RespuestaRecepcionComprobante",
"estado");//está extrae la data de los nodos en un archivo
XML
con.disconnect();
return true;
Para finalizar, la siguiente función se encarga de tomar los parámetros que recibe como respuesta nuestro
web services, debido a que devuelve la información en formato XML, se elaboró esta función la cual extrae
la data de los nodos que nos interesan.
Está función debe de ir antes de finalizar la petición tipo Http que se recibe, esto se puede apreciar en la
función anterior, en donde construye nuevamente en base al String q nos da como respuesta el SRI, un
documento tipo XML.
Para entender esto, por favor comprender muy bien la estructura de datos en los archivos XML, hay mucha
información al respecto.
if(estado.equals("DEVUELTA")){
return false;
}else if(estado.equals("RECIBIDA")){
System.out.println("RECIBIDA");
return true;
}
Para nuestro próximo tutorial, veremos como solicitar la autorización de nuestros comprobantes Consumo
de Web Services SRI - Envío y Recepción de Autorización, cualquier duda o sugerencia será bien recibida.
< Anterior
Siguiente >
Close