jueves, 29 de mayo de 2014

Verificar la disponibilidad de los webservices del SRI

Muchas veces, mientras desarrollamos nuestras aplicaciones de facturación electrónica, precisamos de saber el estado de los servicios web del SRI. En este artículo les presento una manera de poder verificar su disponibilidad para poder emitir nuestros comprobantes bajo un tipo de emisión normal o en contingencia, según sea el caso. Luego de haber creado nuestro cliente proxy, podemos hacer uso de las clases que se generan para poder determinar el estado de conexión mediante el siguiente método:
public static Object getWebService(String wsdlLocation) {
    try {
        QName qname = new QName("http://ec.gob.sri.ws.recepcion", "RecepcionComprobantesService");
        URL url = new URL(wsdlLocation);
        RecepcionComprobantesService service = new RecepcionComprobantesService(url, qname);
        return null;
    } catch (MalformedURLException ex) {
        return ex;
    } catch (WebServiceException ws) {
        return ws;
    }
}

public static boolean existeConexion(String url) {
    int i = 0;
    boolean respuesta = false;
    while (i < 3) {
        Object obj = getWebService(url);
        if (obj  == null) {
            return true;
        }
        if ((obj  instanceof WebServiceException)) {
            respuesta = false;
        }
        i++;
    }
    return respuesta;
}
El código podemos ejecutarlo de la siguiente manera:
public static void main(String[] args) {
    System.out.println(existeConexion("https://celcer.sri.gob.ec/comprobantes-electronicos-ws/RecepcionComprobantes?wsdl"));
}
Espero que este método les sea de utilidad. No se olviden de seguirnos a través de nuestra página en Facebook.

6 comentarios:

Guillermo Granizo dijo...

Gracias Rolando, una consulta que es EnvioComprobantesWs ??

Rolando Palermo Rodríguez Cruz dijo...

He actualizado la clase Guillermo, faltó agregar un método.
Saludos.

Guillermo Granizo dijo...

Gracias Rolando

Anónimo dijo...

Q librerias importo para obtener la propiedad o evento Qname

Anónimo dijo...

Estimado Rolando. Muy buenos articulos. Felicitaciones. Estoy tratando de crear webservices seguros, por ahora estoy experimentando con WSIT con Glassfish 3.1.2.2 y cuando trato de utilizar un ws con un usuario diferente al autorizado no puedo capturar las exceptiones en el cliente. Alguna idea de como hacerlo. El error se da cuando se ejecuta el método desde el cliente y no en la llamada del servicio.

Anónimo dijo...

tengo el siguiente error algien me puede ayudar
ERROR-GENERAL,Fallo al acceder al WSDL en: https://celcer.sri.gob.ec/comprobantes-electronicos-ws/RecepcionComprobantes?wsdl. Ha fallado con:
java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty.

Publicar un comentario