Enviar JSON a un servicio web de FlowForce

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Ejemplos de trabajos >

Enviar JSON a un servicio web de FlowForce

Este ejemplo muestra cómo crear un servicio web de FlowForce que acepte solicitudes POST que lleven datos JSON en el cuerpo de la solicitud HTTP. En segundo lugar mostramos cómo llamar a ese servicio web desde un cliente como MapForce.

 

En este ejemplo vamos a configurar el servicio web para que acepte datos JSON; sin embargo, también podría enviar XML u otro contenido a un servicio creado con FlowForce Server de forma parecida a como se explica más abajo. El servicio web que vamos a crear es muy simple, por lo que solamente acepta datos JSON y los almacena de forma local sin otro tipo de procesamiento. Aunque no lo explicamos en este ejemplo, el trabajo se puede ampliar para que valide o procese datos JSON con RaptorXML Server.

 

En este ejemplo los datos se envían en el cuerpo de la solicitud HTTP y no como parámetros. Para ver un ejemplo que invoque a un servicio web con parámetros consulte Exponer un trabajo como servicio web.

 

Requisitos

Licencias necesarias: FlowForce Server, MapForce Enterprise Edition.

 

Observaciones

FlowForce Server ofrece una forma rápida de crear servicios web que se pueden llamar desde MapForce. MapForce Enterprise Edition actúa como un cliente que llama a un servicio web creado con FlowForce Server. También puede obtener el mismo resultado con un cliente web distinto.

 

FlowForce Server debe ejecutarse en la dirección y en el puerto de red configurados (véase Definir la dirección de red y el puerto).
Debe tener una cuenta de usuario de FlowForce Server con permisos para uno de los contenedores (en este ejemplo se usa el contenedor /public porque está automáticamente abierto a todos los usuarios autenticados).
El trabajo debe guardar los datos de entrada recibidos por el servicio web en un directorio local: C:\POST. Este directorio (o uno similar) debe existir en el equipo en el que se ejecuta FlowForce Server y la cuenta de usuario de su sistema operativo debe tener permisos para escribir en ese directorio.

 

Crear el trabajo de FlowForce

Inicie sesión en la interfaz de administración del servicio web de FlowForce Server, abra el contenedor /public y después haga clic en Crear trabajo. A continuación introduzca un nombre y, si quiere, una descripción para el servicio web.

fs_post_json_01

Para que el trabajo trate los datos POST como contenido arbitrario debe tener exactamente un parámetro de tipo secuencia. Para crear ese parámetro haga clic en Agregar parámetro add, introduzca un nombre (en este ejemplo, "datos") y seleccione secuencia como tipo de datos.

fs_post_json_02

A continuación, agregue un nuevo paso de ejecución y configúrelo como sigue:

fs_post_json_03

El paso de ejecución anterior llama a la función integrada de FlowForce copy. La expresión que aparece en la caja de texto "Origen" convierte los datos de entrada recibidos por el servicio web en un archivo usando la función de expresión as-file (recuerde que en el paso anterior hemos llamado "datos" al parámetro de entrada). para obtener esta función de forma automática haga clic en el botón ff_ic_set_to junto a la caja de texto "Origen" y después seleccione datos.

 

La caja de texto "Destino" contiene una expresión que produce un nombre de archivo único cada vez que se invoca un trabajo. Para obtener ese nombre de archivo único se llama a la función de expresión de FlowForce instance-id; por tanto, el nombre del archivo JSON será parecido a "archivo35.json" y el número será distinto con cada llamada al trabajo (esos números corresponden al ID de las instancias del trabajo de FlowForce). También puede introducir una ruta completa, pero no es necesario si ha configurado la ruta de acceso del directorio de trabajo, como hemos hecho en este ejemplo. Al configurar la ruta de acceso al directorio de trabajo cualquier nombre de archivo relativo se resuelve de forma relativa a esa ruta.

 

El directorio C:\POST (o uno similar si ha cambiado la ruta) debe existir y su cuenta de usuario debe tener permisos para escribir en él.

 

En la sección "Servicio" marque la casilla Permitir acceso a este trabajo por HTTP e introduzca "POST_JSON" o un nombre parecido para el servicio web.

fs_post_json_04

En "Credenciales" seleccione una credencial ya existente o indique una credencial local (véase también Credenciales). Estas deben ser las credenciales de la cuenta de usuario del sistema operativo en el que se está ejecutando FlowForce.

fs_deploy_mapping_05

Nota:no confunda estas credenciales con las que usó para acceder a la interfaz de administración del servicio web de FlowForce Server.

 

Haga clic en Guardar. Ahora está listo para llamar al servicio web nuevo desde un cliente.

 

Llamar al servicio web desde un explorador

Como un primer paso para probar el servicio web puede llamarlo desde su explorador:

 

1.Abra un explorador web y teclee esta URL en la barra de direcciones:

 

http(s)://[FlowForceServer]:[Port]/service/POST_JSON

 

Por defecto, esta URL es http://localhost:4646/service/POST_JSON, si no ha cambiado el host o el puerto de FlowForce Server. De haberlo hecho, reemplace [FlowForceServer] y [Port] con las opciones de la página de configuración de FlowForce (véase Definir la configuración de red). Si utiliza Internet Explorer para probar trabajos de FlowForce Server expuestos como servicios web puede que necesite deshabilitar la opción Mostrar mensajes de error HTTP descriptivos en la pestaña de opciones avanzadas de IE.

 

2.Cuando la aplicación le pida que suministre unas credenciales, introduzca sus credenciales de FlowForce Server.

 

Esto es solamente para probar el servicio web y no se debe hacer en producción. Recomendamos que cree un usuario nuevo de FlowForce, le otorgue el permiso Uso para el contenedor en el que se encuentra el trabajo y después acceda al servicio web con esa cuenta de usuario. Para deshabilitar la autenticación HTTP y hacer que el servicio web se vuelva público otorgue el permiso Uso al usuario anonymous (véase ¿Cómo funcionan los permisos?).

 

3.Haga clic en Examinar y seleccione el archivo JSON para enviarlo en la solicitud POST.

fs_post_json_05

4.Haga clic en Enviar. FlowForce Server procesa el trabajo y muestra el resultado en el explorador.

 

Si el trabajo se ejecuta con éxito, el explorador muestra el resultado "true" y el archivo JSON se guarda en el directorio de trabajo C:\POST. Si aparece un error de ejecución consulte el registro del trabajo para más detalles (véase Ver el registro de trabajos).

 

Llamar al servicio web desde MapForce

También puede llamar al servicio web desde un cliente que no sea el explorador web, como MapForce Enterprise Edition.

 

1.En el menú Archivo haga clic en Nuevo para crear una asignación nueva.
2.En el menú Insertar haga clic en Función de servicio web. Se abre el cuadro de diálogo "Configuración de la llamada a servicios web".
3.Haga clic en Manual y elija POST como método de solicitud; introduzca la URL del servicio web en el campo URL. Se trata de la misma URL que usamos para probar el servicio web desde el explorador.

fs_post_json_06

4.Haga clic en el botón Editar junto al campo Configuración de seguridad HTTP e introduzca las credenciales necesarias para acceder al servicio web.

fs_post_json_07

Nota:si quiere suministrar las credenciales desde una asignación en lugar de guardarlas en este cuadro de diálogo marque la casilla Autenticación dinámica. Esto permite suministrar las credenciales de forma interactiva como parámetros de entrada de la asignación al ejecutarla.

 

5.Haga clic en Aceptar para cerrar el cuadro de diálogo. La asignación ahora tiene este aspecto:

fs_post_json_08

6.Añada a la asignación una entrada simple que suministre los datos JSON; para ello use el comando de menú Insertar | Insertar componente de entrada. Introduzca también algunos datos JSON de prueba que se puedan usar al ejecutar esta asignación en el momento de diseñarla, como se ve aquí:

fs_post_json_09

Nota:los datos JSON de prueba de este ejemplo son muy cortos porque son solamente para ilustrar el ejemplo. Cuando MapForce ejecuta una asignación puede suministrar los datos JSON como parámetro de entrada para la asignación desde un archivo JSON.

 

7.Para añadir el componente de salida de la asignación use el comando de menú Insertar | Insertar componente de salida.

fs_post_json_10

8.Arrastre las funciones charset-encode y mime-entity desde la ventana Bibliotecas y trace las conexiones como en la imagen siguiente. También necesitará añadir dos constantes; para ello use el comando de menú Insertar | Constante.

fs_post_json_11

Llamada a servicio web con cuerpo sin estructura

En la asignación anterior el componente JSON de entrada viene dado por un componente simple de entrada. Las funciones charset-encode y mime-entity son funciones integradas de MapForce que preparan el cuerpo de la solicitud HTTP. El código de estado devuelto por el servicio web se asigna al resultado devuelto por la asignación.

 

Preparar el cuerpo de la solicitud HTTP sin estructura, como se ve en la imagen anterior, es solo una de las formas de enviar datos en la solicitud POST. Para estructuras JSON y XML puede introducir el esquema JSON o XML en la solicitud en el cuadro de diálogo "Configuración de la llamada a servicios web". En este caso, el cuerpo del componente del servicio web suministra componentes de entrada (conectores) basados en la estructura JSON/XML de la solicitud.

 

Ahora puede ejecutar la asignación con MapForce; para ello haga clic en la pestaña Resultados. Cualquier error que ocurra aparece en la ventana Mensajes. Para depurar la asignación es posible que tenga que consultar también el registro de FlowForce Server (si es que la solicitud POST alcanzó el servidor). De lo contrario, si la asignación se ejecuta con éxito ocurre lo siguiente:

 

1.El código de estado HTTP "200" aparece en el panel Resultados.
2.En el lado servidor los datos JSON suministrados se escriben en un archivo que se guarda en el directorio C:\POST.

 

En MapForce se puede configurar el comportamiento exacto de la asignación en caso de error. Asimismo, la asignación se puede ejecutar con MapForce Server o implementar en FlowForce Server y convertir en un trabajo o incluso en otro servicio web. Para más información consulte la documentación de MapForce en https://www.altova.com/es/documentation.


© 2019 Altova GmbH