Consumir Webservices Bajo Https en Java
Consumir Webservices Bajo Https en Java
Consumir Webservices Bajo Https en Java
html
Usualmente cuando desarrollamos aplicaciones en Java que van a hacer uso de recursos
seguros (como en este caso, consumir webservices a travs de un canal cifrado),
debemos asegurarnos de tener instalados los certificados digitales necesarios puesto que
al ser Java un lenguaje multiplataforma, no utiliza los certificados alojados en el sistema
operativo [1]. Es por esa razn que decid escribir este artculo dedicado a este tema. Los
pasos para realizar esto los voy a detallar a lo largo de este post, en donde as mismo
mostrar un ejemplo prctico. Bueno... manos a la obra!
Ahora hacemos clic en el candado verde y se desplegar un panel con dos pestaas.
Debemos posicionarnos en la pestaa Conexin como muestro a continuacin:
En la ventana anterior debemos hacer clic en el botn Copiar en archivo... para importar el
certificado. Esto nos abrir un asistente (el clsico siguiente-siguiente) tal como se muestra
en la imagen siguiente:
Seleccionamos X.509 codificado base 64 (.CER) y hacemos clic en Siguiente>. Ahora toca
seleccionar la ruta donde queremos guardar nuestro certificado, en el caso de la imagen
he seleccionado el escritorio. Elegimos la carpeta que gustemos y hacemos clic
en Siguiente>.
Ahora solo nos falta hacer clic en el botn finalizar de la siguiente ventana:
Con esto ya tenemos el certificado, ahora solo hace falta importarlo a nuestro keystore,
para lo cual haremos uso del keytool.
Lo que debemos hacer es llamar a la herramienta keytool.exe desde una consola, con el
siguiente comando:
keytool -import -keystore "C:\Archivos de programa\Java\jre1.6.0_05\lib\security\cacerts"
-filec:\NuevaEntidadCertificadora.cer -alias CA_SRI -storepass changeit
En donde las partes de color azul son valores relativos de: nuestra instalacin de java, la
ruta en donde descargamos nuestro certificado y el alias que le asignaremos y que debe
ser nico.
Lo primero que debemos recordar es que debemos ejecutar la consola de windows como
administrador ya que vamos a sobreecribir un archivo en una carpeta con privilegios
especiales. Para hacer esto debemos ejecutar la consola tal como se muestra en la
siguiente imagen:
Descargando el wisdel:
Ahora solo resta descargar el wsdl, para lo cual ejecutamos los tres sencillos pasos que
detallo a continuacin en imgenes:
Y con eso nos deber generar una estructura similar a la mostrada en la siguiente imagen:
Luego de eso, debemos agregar la siguiente clase que contiene el mtodo main que nos
servir para poder probar la aplicacin.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.rolandopalermo.ejemplos.test;
import com.rolandopalermo.ejemplos.RespuestaSolicitud;
/**
*
* @author Rolando
*/
public class Main {
18
19
20
21
22
23
24
25
Y con eso ejecutamos la aplicacin recibiendo una respuesta lo que nos indica que nuestra
aplicacin ha funcionado correctamente.
Es muy imporatnte indicar que el mtodo main deber contener las siguientes lneas de
cdigo lo cual le indicar a la aplicacin en dnde se encuentra nuestro repositorio de
certificados.
?
1
2
3
4
Espero que este artculo les sea de utilidad y cualquier pregunta no duden en comentarla.
Saludos y hasta una prxima oportunidad.
Y para los interesados, brindamos asesora en el tema de facturacin electrnica. El
temario del taller lo pueden descargar aqu: Temario del Taller.
Durante los ltimos das, al consumir los Webservice del SRI hemos podido notar que
muchas veces se queda en espera sin retornar el objeto de respuesta. Es por eso que es
importante controlar el tiempo de espera mximo en nuestra aplicacin (Timeout). Para
aquellos quienes estn usando el JDK 1.6 este cdigo les servir para poder establecer un
mecanismo de control:
?
1
2
3
port = service.getRecepcionComprobantesPort();
((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.connect
5000);
((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.request
5000);
Espero que este cdigo les sea de utilidad y no se olviden de seguirnos a travs de
nuestra pgina en Facebook.