OneSpan Sign para nuevos usuarios: compruebe el estado del paquete y descargue archivos con REST en Java

Haris Haidary, 14 de Diciembre de 2015

En este blog, haré un seguimiento de Crear y enviar un paquete con REST en Java Blog. Le mostraré algunas cosas que puede hacer después de enviar el paquete, como:

  • Verifique el estado del paquete / firma
  • Descargue los documentos firmados electrónicamente
  • Descargar el resumen de evidencia

Configuración

Configuración inicial

Continúe y cree un nuevo archivo .java para este tutorial. Puede comenzar un nuevo proyecto o simplemente crear una nueva clase en un proyecto creado previamente. Llamé a mi archivo "CheckStatusAndDownloadRest.java". Trabajar con API REST requiere el uso de JSON. Para trabajar con más facilidad, usaré una biblioteca externa org.json. El archivo jar se puede encontrar aquí . Si necesita ayuda sobre cómo importar bibliotecas externas, siga los pasos descritos anteriormente. Blog .

Localizando la ID del paquete de su proyecto existente

Para este ejemplo, necesitará un packageId de un paquete de documentos creado previamente. Los dos métodos más probables para recuperar su packageId son navegar al paquete en la interfaz de usuario y recuperarlo de la URL, o de manera similar en el blog anterior, el packageId se devolvió en la respuesta HTTP que recibió de su llamada REST. 

Comunidad de desarrolladores de OneSpan Sign

Comunidad de desarrolladores de OneSpan Sign

¡Únase a la comunidad de desarrolladores de OneSpan Sign! Foros, blogs, documentación, descargas de SDK y más.

Únete hoy

El código

Ahora estamos listos para escribir el código en su clase .java. Copie el siguiente código en su archivo "CheckStatusAndDownloadRest.java". Revisaré el código con mayor detalle a continuación.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.json. *;

clase pública CheckStatusAndDownloadREST {

	public static void main (String [] args) lanza MalformedURLException, IOException, JSONException {

		Cadena API_KEY = "YOUR_API_KEY";
		String url = "https://sandbox.esignlive.com/api/packages";

		Cliente URL = URL nueva (url + "/ 1edd9f11-9bcc-4587-94e8-aa6478bbda4d /");
		HttpURLConnection conn = (HttpURLConnection) client.openConnection ();
		conn.setRequestProperty ("Tipo de contenido", "aplicación / json");
		conn.setRequestProperty ("Autorización", "Básico" + API_KEY);
		conn.setRequestProperty ("Aceptar", "aplicación / json");

		int responseCode = ((HttpURLConnection) conn) .getResponseCode ();
		
		if (responseCode == 200) {
			System.out.println (responseCode + "OK!");
			BufferedReader in = new BufferedReader (nuevo InputStreamReader (conn.getInputStream ()));
			String inputLine;
			Respuesta de StringBuffer = new StringBuffer ();

			while ((inputLine = in.readLine ())! = null) {
				respuesta.append (inputLine);
			}

			cercar();
			conn.disconnect ();
			
			JSONObject json = new JSONObject (response.toString ());
			System.out.println (json.getString ("estado"));
			
		} más {
			System.out.println ("La solicitud no se realizó correctamente");
		}	

		URL client2 = nueva URL (url + "/ 1edd9f11-9bcc-4587-94e8-aa6478bbda4d / signatureStatus");
		HttpURLConnection conn2 = (HttpURLConnection) client2.openConnection ();
		conn2.setRequestProperty ("Tipo de contenido", "aplicación / json");
		conn2.setRequestProperty ("Autorización", "Básico" + API_KEY);
		conn2.setRequestProperty ("Aceptar", "aplicación / json");

		int responseCode2 = ((HttpURLConnection) conn2) .getResponseCode ();
		
		if (responseCode2 == 200) {
			System.out.println (responseCode2 + "OK!");
	
			BufferedReader in2 = new BufferedReader (nuevo InputStreamReader (conn2.getInputStream ()));
			Cadena inputLine2;
			StringBuffer response2 = new StringBuffer ();
	
			while ((inputLine2 = in2.readLine ())! = null) {
				respuesta2.append (inputLine2);
			}
	
			in2.close ();
			conn2.disconnect ();
			
			JSONObject json2 = nuevo JSONObject (response2.toString ());
			System.out.println (json2.getString ("estado"));	
	
			if (json2.getString ("status"). equals ("COMPLETED")) {
	
				URL client3 = nueva URL (url + "/ 1edd9f11-9bcc-4587-94e8-aa6478bbda4d / documents / zip");
				HttpURLConnection conn3 = (HttpURLConnection) client3.openConnection ();
				conn3.setRequestProperty ("Tipo de contenido", "aplicación / json");
				conn3.setRequestProperty ("Autorización", "Básico" + API_KEY);
				conn3.setRequestProperty ("Aceptar", "aplicación / zip");
	
				int responseCode3 = ((HttpURLConnection) conn3) .getResponseCode ();
				System.out.println (responseCode3 + "OK!");
				System.out.println ("Descargando archivos zip ...");
		
				InputStream inputStream = conn3.getInputStream ();
				String saveFilePath = "C: /Users/your_account/Desktop/yourFiles.zip";
	
				FileOutputStream outputStream = nuevo FileOutputStream (saveFilePath);
	
				int bytesRead = -1;
				byte [] buffer = nuevo byte [4096];
				
				while ((bytesRead = inputStream.read (buffer))! = -1) {
					outputStream.write (buffer, 0, bytesRead);
				}
				
				System.out.println ("¡Archivos zip descargados!");
				outputStream.close ();
				inputStream.close ();
				conn3.disconnect ();
				
				URL client4 = nueva URL (url + "/ 1edd9f11-9bcc-4587-94e8-aa6478bbda4d / evidencia / resumen");
				HttpURLConnection conn4 = (HttpURLConnection) client4.openConnection ();
				conn4.setRequestProperty ("Tipo de contenido", "aplicación / json");
				conn4.setRequestProperty ("Autorización", "Básico" + API_KEY);
				conn4.setRequestProperty ("Aceptar", "aplicación / pdf");
	
				int responseCode4 = ((HttpURLConnection) conn4) .getResponseCode ();
				System.out.println (responseCode4 + "OK!");
				System.out.println ("Descargando resumen de evidencia ...");
				
				inputStream = conn4.getInputStream ();
				saveFilePath = "C: /Users/your_account/Desktop/evidenceSummary.pdf";
	
				outputStream = nuevo FileOutputStream (saveFilePath);
	
				bytesRead = -1;
				buffer = nuevo byte [4096];
				while ((bytesRead = inputStream.read (buffer))! = -1) {
					outputStream.write (buffer, 0, bytesRead);
				}
				
				System.out.println ("Resumen de evidencia descargado!");
				outputStream.close ();
				inputStream.close ();
				conn4.disconnect ();
				
			} más {
				System.out.println ("¡El paquete aún no se ha firmado!");
			}
		} más {
			System.out.println ("¡La solicitud no tuvo éxito!");
		}
	}
}

 

Repasemos el código con más detalle. Como antes, las dos primeras líneas es donde se define la información de su conexión para su conexión e-SignLive. Si está en el entorno de producción, cambie la url a https://apps.e-signlive.com/api . Asegúrese de reemplazar el texto del marcador de posición con su API_KEY. En el Sandbox, su API_KEY se puede encontrar en la página CUENTA cuando inicia sesión en su cuenta de OneSpan Sign. Si está en producción, necesitará obtener esto del soporte.

Cadena API_KEY = "YOUR_API_KEY";
String url = "https://sandbox.esignlive.com/api/packages";

 

El siguiente par de líneas es donde crea su conexión para realizar su solicitud GET y establecer el tipo de contenido de encabezado, la autorización y los valores de aceptación apropiados.

 

Cliente URL = URL nueva (url + "/ 1edd9f11-9bcc-4587-94e8-aa6478bbda4d /");
HttpURLConnection conn = (HttpURLConnection) client.openConnection ();
conn.setRequestProperty ("Tipo de contenido", "aplicación / json");
conn.setRequestProperty ("Autorización", "Básico" + API_KEY);
conn.setRequestProperty ("Aceptar", "aplicación / json");

 

Verifica el estado

En esta sección, necesitará la identificación del paquete que encontró anteriormente. Con él, está listo para hacer su solicitud GET para determinar el estado de su paquete. Las dos líneas a continuación es donde obtenemos el código de estado del mensaje de respuesta HTTP. Si la solicitud es exitosa, responseCode debería imprimir 200.

int responseCode = ((HttpURLConnection) conn) .getResponseCode ();

 

Si la solicitud es exitosa, creamos una secuencia de entrada y la leemos desde la conexión en un BufferedReader. El contenido JSON de la respuesta se analiza posteriormente en un JSONObject y se imprime. El estado del paquete se proporciona en la propiedad "estado" del JSONObject.

 

System.out.println (responseCode + "OK!");
BufferedReader in = new BufferedReader (nuevo InputStreamReader (conn.getInputStream ()));
String inputLine;
Respuesta de StringBuffer = new StringBuffer ();

while ((inputLine = in.readLine ())! = null) {
   respuesta.append (inputLine);
}

cercar();

JSONObject json = new JSONObject (response.toString ());
System.out.println (json.getString ("estado"));

 

La recuperación del estado de firma de su paquete se realiza exactamente de la misma manera, excepto por la adición de "/ signatureStatus" a la url de solicitud.

 

URL client2 = nueva URL (url + "/ 1edd9f11-9bcc-4587-94e8-aa6478bbda4d / signatureStatus");
HttpURLConnection conn2 = (HttpURLConnection) client2.openConnection ();
conn2.setRequestProperty ("Tipo de contenido", "aplicación / json");
conn2.setRequestProperty ("Autorización", "Básico" + API_KEY);
conn2.setRequestProperty ("Aceptar", "aplicación / json");

int responseCode2 = ((HttpURLConnection) conn2) .getResponseCode ();
		
if (responseCode2 == 200) {
   System.out.println (responseCode2 + "OK!");
	
   BufferedReader in2 = new BufferedReader (nuevo InputStreamReader (conn2.getInputStream ()));
   Cadena inputLine2;
   StringBuffer response2 = new StringBuffer ();
	
   while ((inputLine2 = in2.readLine ())! = null) {
      respuesta2.append (inputLine2);
   }
	
   in2.close ();
   conn2.disconnect ();
			
   JSONObject json2 = nuevo JSONObject (response2.toString ());
   System.out.println (json2.getString ("estado"));

 

Descargar los archivos

Para la parte final, le mostraré cómo descargar su paquete en un archivo zip en su escritorio, así como el resumen de la evidencia. El primer par de líneas sigue siendo el mismo. Como recordatorio, asegúrese de agregar "/ documentos / zip" a la url de solicitud.

 

if (json2.getString ("status"). equals ("COMPLETED")) {
 
   URL client3 = nueva URL (url + "/ 1edd9f11-9bcc-4587-94e8-aa6478bbda4d / documents / zip");
   HttpURLConnection conn3 = (HttpURLConnection) client3.openConnection ();
   conn3.setRequestProperty ("Tipo de contenido", "aplicación / json");
   conn3.setRequestProperty ("Autorización", "Básico" + API_KEY);
   conn3.setRequestProperty ("Aceptar", "aplicación / zip");

   int responseCode3 = ((HttpURLConnection) conn3) .getResponseCode ();
   System.out.println (responseCode3 + "OK!");
   System.out.println ("Descargando archivos zip ...");

 

Luego abrimos la secuencia de entrada desde la conexión HTTP. Para este ejemplo, he elegido descargar el archivo zip en mi escritorio, pero puede especificar cualquier ubicación que desee en su computadora. En mi ejemplo, no olvide reemplazar el texto del marcador de posición con el nombre de su cuenta.

 

InputStream inputStream = conn3.getInputStream ();
String saveFilePath = "C: /Users/your_account/Desktop/yourFiles.zip";

 

A continuación, abra una secuencia de salida para escribir el archivo zip en la ubicación especificada. Después de escribir todos los datos, continúe y cierre la conexión.

 

FileOutputStream outputStream = nuevo FileOutputStream (saveFilePath);

int bytesRead = -1;
byte [] buffer = nuevo byte [4096];
while ((bytesRead = inputStream.read (buffer))! = -1) {
   outputStream.write (buffer, 0, bytesRead);
}

System.out.println ("¡Archivos zip descargados!");
outputStream.close ();
inputStream.close ();
conn3.disconnect ();

 

Para descargar el resumen de evidencia, el código es casi idéntico a la descarga del archivo zip, con la excepción del campo de encabezado "Aceptar". Asegúrese de cambiar eso a "application / pdf".

 

URL client4 = nueva URL (url + "/ 1edd9f11-9bcc-4587-94e8-aa6478bbda4d / evidencia / resumen");
HttpURLConnection conn4 = (HttpURLConnection) client4.openConnection ();
conn4.setRequestProperty ("Tipo de contenido", "aplicación / json");
conn4.setRequestProperty ("Autorización", "Básico" + API_KEY);
conn4.setRequestProperty ("Aceptar", "aplicación / pdf");
	
int responseCode4 = ((HttpURLConnection) conn4) .getResponseCode ();
System.out.println (responseCode4 + "OK!");
System.out.println ("Descargando resumen de evidencia ...");
				
inputStream = conn4.getInputStream ();
saveFilePath = "C: /Users/your_account/Desktop/evidenceSummary.pdf";
	
outputStream = nuevo FileOutputStream (saveFilePath);
	
bytesRead = -1;
buffer = nuevo byte [4096];
while ((bytesRead = inputStream.read (buffer))! = -1) {
   outputStream.write (buffer, 0, bytesRead);
}
				
System.out.println ("Resumen de evidencia descargado!");
outputStream.close ();
inputStream.close ();
conn4.disconnect ();

Ejecutando el código

Con su clase completada, es hora de ejecutar el archivo Java. Presione el botón Ejecutar en su IDE. El paquete que verifiqué ya estaba firmado, por lo que el resultado es el siguiente:

 

consola

 

Si navega hasta la ubicación que especificó para guardar su archivo zip y el resumen de evidencia, encontrará sus archivos (si su paquete se completó):

escritorio

Ahí tienes. Ha verificado con éxito el estado de su paquete, ha descargado los archivos de su paquete y el resumen de evidencia.

Si tiene preguntas sobre este blog o cualquier otra cosa relacionada con la integración de OneSpan Sign en su aplicación, visite los foros de la comunidad de desarrolladores:

https://developer.esignlive.com . Eso es todo de mi parte. ¡Gracias por leer! Si esta publicación le parece útil, compártala en Facebook, Twitter o LinkedIn.

Haris Haidary
Evangelista Técnico Junior de Producto
LinkedIn El | Gorjeo
OneSpan Sign for New Users Serie de blogs