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:

  1. Gracias Rolando, una consulta que es EnvioComprobantesWs ??

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

    ResponderEliminar
  3. Q librerias importo para obtener la propiedad o evento Qname

    ResponderEliminar
  4. 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.

    ResponderEliminar
  5. 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.

    ResponderEliminar