Este tema contiene las secciones siguientes:
Utilice el nodo HTTPRequest para interactuar con un servicio Web, utilizando todo o parte del mensaje de entrada como la petición a ese servicio. También puede configurar el nodo para crear un nuevo mensaje de salida a partir del contenido del mensaje de entrada aumentado por el contenido de la respuesta del servicio Web antes de propagar el mensaje a los siguientes nodos en el flujo de mensajes.
En función de la configuración, este nodo construye una petición HTTP o HTTP sobre SSL (HTTPS) a partir del contenido especificado del mensaje de entrada y la envía al servicio Web. Recibe la respuesta del servicio Web y analiza la respuesta para la inclusión en el árbol de salida. Genera cabeceras HTTP si su configuración lo requiere.
Puede utilizar este nodo en un flujo de mensajes que no contenga un nodo HTTPInput o HTTPReply.
El nodo HTTPRequest maneja los mensajes en los siguientes dominios de mensaje:
El nodo HTTPRequest se representa en el entorno de trabajo con el siguiente icono:
El nodo HTTPRequest se puede utilizar en cualquier flujo de mensajes que necesite enviar una petición HTTP. El ejemplo más común de esto es un flujo de mensajes que invoca un servicio Web. Para obtener más información sobre las aplicaciones de servicios Web, consulte Aplicaciones de servicios web.
Puesto que el nodo interactúa directamente con un servicio externo utilizando TCP/IP, puede experimentar los siguientes tipos de error:
Si el nodo detecta estos errores, genera una excepción, llena la lista de excepciones con la información de error recibida y dirige el mensaje de entrada sin modificar al terminal de anomalías.
La respuesta se producirá como BLOB, porque el nodo no puede determinar en qué formato estará la respuesta. Si no ha configurado este nodo para que maneje el redireccionamiento, los mensajes con un código de estado de redirección (3xx) también se manejan de esta manera.
El nodo HTTPRequest trata los códigos de estado de la serie 100 como una respuesta de continuación, descarta la respuesta actual y espera otra respuesta del servidor Web.
Los códigos de estado de la serie 200 se tratan como satisfactorios y la respuesta se direcciona al terminal de salida del nodo, mientras que se siguen los valores de las diversas pestañas del nodo para el formato del mensaje de salida generado.
Los códigos de estado de la serie 300 son para redireccionarse. Si se ha seleccionado la propiedad Seguir redirección, el nodo no reenvía la petición a la nueva dirección especificada en la respuesta recibida. Si no se ha seleccionado la propiedad Seguir redirección, los códigos se tratan como un error tal como se describe en la sección que aparece más arriba sobre cómo manejar errores.
Los códigos de estado de las series 400 y 500 son errores y se tratan como se describe en la sección anterior sobre el manejo de errores.
Si se selecciona la propiedad Sustituir mensaje de entrada por respuesta de servicio web o Sustituir entrada con error, la cabecera del mensaje de entrada, es decir, la cabecera que pertenece al mensaje tal como llega en el terminal de entrada (IN) del nodo HTTPRequest, no se propaga con el mensaje que sale del nodo HTTPRequest. Sin embargo, si se especifica una de las propiedades que especifica una ubicación en el árbol de mensaje, las cabeceras del mensaje de entrada se propagan.
La cabecera HTTPResponse, que contiene las cabeceras devueltas por el servicio Web remoto, es la primera cabecera del mensaje que se propaga desde el nodo, después de las propiedades. Esto es así independientemente de las opciones que se elijan. Por consiguiente, si desea que la respuesta del nodo HTTPRequest se ponga en una cola MQ, deberá manipular las cabeceras de forma que la primera cabecera (después de las propiedades) sea un MQMD.
Si está sustituyendo el mensaje de entrada por una respuesta, puede copiar el MQMD del mensaje de entrada en el árbol de entorno antes del nodo HTTPRequest y, a continuación, volver a copiarlo en el árbol de mensaje después del nodo HTTPRequest. Si está especificando una ubicación para la respuesta, con el fin de mantener cabeceras de mensajes de entrada existentes, deberá mover o eliminar la cabecera de respuesta HTTP para que el MQMD sea la primera cabecera.
SET OutputRoot = InputRoot; SET OutputRoot.HTTPResponseHeader = NULL;
SET OutputRoot = InputRoot; DECLARE HTTPHeaderRef REFERENCE TO OutputRoot.HTTPResponseHeader; DETACH HTTPHeaderRef; ATTACH HTTPHeaderRef TO OutputRoot.MQMD AS NEXTSIBLING;
SET OutputLocalEnvironment.Destination.HTTP.RequestLine.Method = 'GET';
Una vez ha puesto una instancia del nodo HTTPRequest en un flujo de mensajes, puede configurarlo. Pulse el botón derecho del ratón en el nodo en la vista de editor y pulse Propiedades. Aparecen las propiedades básicas del nodo.
Todas las propiedades obligatorias para las que debe especificar un valor (las que no tienen un valor predeterminado definido) están marcadas con un asterisco en el diálogo de propiedades.
Configure el nodo HTTPRequest de la manera siguiente:
Las dos primeras opciones le proporcionan métodos dinámicos para establecer un URL para cada mensaje de entrada cuando éste pasa a través del flujo de mensajes. Si desea utilizar una de estas opciones, debe incluir un nodo Compute en el flujo de mensajes antes del nodo HTTPRequest para crear e inicializar el valor requerido.
La tercera opción proporciona un valor que es fijo para cada mensaje recibido en este nodo. Debe establecer esta propiedad para que contenga un valor predeterminado que se utilice si los demás campos no se han creado o contienen un valor nulo. Si uno de los campos contiene un valor, se ignora el valor de esta propiedad. La propiedad URL de servicio Web debe contener un URL válido o el despliegue fallará. Asimismo debe asegurarse de que el valor que establece en X-Original-HTTP-URL o LocalEnvironment.Destination.HTTP.RequestURL es también un URL válido; si no lo es, el nodo genera una excepción y el mensaje se propaga al terminal de anomalías.
Si un URL empieza con http://, el nodo de petición realiza una petición HTTP al URL especificado. Si el URL empieza con https://, el nodo de petición realiza una petición HTTP sobre SSL (HTTPS) al URL especificado, utilizando los parámetros especificados en la pestaña SSL del nodo.
Si selecciona HTTP/1.1, tiene la opción de utilizar también HTTP/1.1 mantener activado.
Tenga en cuenta que dado que ambos extremos de una conexión SSL deben estar de acuerdo en el protocolo que van a utilizar, el protocolo elegido debe ser uno que el servidor remoto pueda aceptar.
Si desea que el mensaje de petición contenga un subconjunto del mensaje de entrada, deseleccione este recuadro y complete la propiedad Ubicación del mensaje de petición en el árbol.
Puede entrar cualquier referencia de campo ESQL válida, incluidas expresiones dentro de la referencia. Por ejemplo, entre:
InputRoot.XMLNS.ABC
Si selecciona el recuadro Utilizar todo el mensaje de entrada como petición, se ignora esta propiedad.
Cuando se analiza el contenido del árbol de mensaje adecuado para crear una corriente de bits, se utilizan las propiedades de mensaje (dominio, conjunto, tipo y formato) asociadas al cuerpo del mensaje de entrada y almacenadas en la carpeta Propiedades.
Si desea que el mensaje de respuesta del servicio Web se incluya en el mensaje de salida con parte del contenido del mensaje de entrada, deseleccione el recuadro y complete la propiedad Ubicación del mensaje de respuesta en el árbol. Si deselecciona esta propiedad, el nodo copia el mensaje de entrada en el mensaje de salida y escribe el mensaje de respuesta del servicio Web encima del contenido del mensaje de salida en la ubicación especificada (el mensaje de entrada mismo no se modifica).
Puede entrar cualquier referencia de campo ESQL válida, incluyendo expresiones dentro de la referencia, y nuevas referencias de campo (para crear un nuevo nodo en el árbol de mensaje para la respuesta). Por ejemplo, entre:
OutputRoot.XMLNS.ABC.DEFo
Environment.WSReply
Si selecciona el recuadro Sustituir mensaje de entrada por respuesta de servicio web, se ignora esta propiedad.
Cuando se analiza la corriente de bits de respuesta para crear el contenido del árbol de mensaje, se utilizan las propiedades de mensaje (dominio, conjunto, tipo y formato) que ha especificado en las propiedades predeterminadas del nodo (descritas más abajo).
Si no desea que el nodo genere un HTTPRequestHeader para el mensaje de petición, deseleccione el recuadro Generar cabeceras HTTP por omisión desde entrada (el valor predeterminado es seleccionado). Para controlar el contenido del HTTPRequestHeader que se incluye en el mensaje de petición, incluya un nodo Compute que añada un HTTPRequestHeader al mensaje de entrada antes de este nodo HTTPRequest en el flujo de mensajes, y deseleccione este recuadro.
También añade las cabeceras de servicio Web que se muestran en la siguiente tabla, con los valores predeterminados, si no están presentes en HTTPRequestHeader o HTTPInputHeader.
Cabecera | Valor predeterminado |
---|---|
SOAPAction | "" (serie vacía) |
Content-Type | text/xml; charset=utf-8 |
Host | El nombre del sistema principal al que se envía la petición. |
También añade la cabecera opcional Content-Length con el valor calculado correcto, aunque no esté presente en HTTPRequestHeader o HTTPInputHeader.
Si desea que el mensaje de error del servicio Web se incluya en el mensaje de salida con parte del contenido del mensaje de entrada, deseleccione el recuadro y complete la propiedad Ubicación del mensaje de error. Si deselecciona esta propiedad, el nodo copia el mensaje de entrada en el mensaje de salida y escribe el mensaje de error del servicio Web encima del contenido del mensaje de salida en la ubicación especificada (el mensaje de entrada mismo no se modifica).
Puede entrar cualquier referencia de campo ESQL válida, incluyendo expresiones dentro de la referencia, y nuevas referencias de campo (para crear un nuevo nodo en el árbol de mensaje para la respuesta). Por ejemplo, entre:
OutputRoot.XMLNS.ABC.DEFo
Environment.WSError
Si selecciona el recuadro Sustituir entrada con error, se ignora esta propiedad.
Si el servicio Web devuelve un mensaje de error, se ignoran los valores de estas propiedades y el analizador BLOB analiza el mensaje.
Deje en blanco Conjunto de mensajes para los analizadores XML, XMLNS, XMLNSC, JMS, MIME y BLOB.
Deje en blanco Tipo de mensaje para los analizadores XML, XMLNS, XMLNSC, JMS, MIME, BLOB e IDOC.
Deje en blanco Formato del mensaje para los analizadores XML, XMLNS, XMLNSC, JMS, MIME y BLOB.
Si desea ver más información detallada, consulte los apartados Validar mensajes y Propiedades de validación para mensajes del dominio MRM.
Pulse Cancelar para cerrar el diálogo y descartar todos los cambios que ha efectuado en las propiedades.
Conecte el terminal de salida, el terminal de error o el terminal de anomalías de este nodo a otro nodo de este flujo de mensajes para procesar adicionalmente el mensaje, procesar errores o enviar el mensaje a un destino adicional. Si no conecta el terminal de anomalías, el mensaje se elimina. Si no conecta el terminal de anomalías, el intermediario proporciona el proceso de errores predeterminado, descrito en Manejar errores en flujos de mensajes.
Los terminales del nodo HTTPRequest se describen en la siguiente tabla.
Terminal | Descripción |
---|---|
In (de entrada) | El terminal de entrada que acepta un mensaje para que lo procese el nodo. |
Failure (de anomalías) | El terminal de salida al que se dirige un mensaje si se ha detectado una anomalía durante su proceso en el nodo. |
Out (de salida) | El terminal de salida al que se direcciona el mensaje si representa la finalización satisfactoria de la petición de servicio Web y si se requiere proceso adicional dentro del flujo de mensajes. |
Error | El terminal de salida al que se dirigen los mensajes que incluyen un código de estado HTTP que no está entre 200 y 299, incluidos los códigos de redireccionamiento (3xx) si no ha establecido la propiedad Seguir la redirección de HTTP. |
Las tablas siguientes describen las propiedades del nodo; la columna con la cabecera O indica si la propiedad es obligatoria (marcada con un asterisco en el diálogo de propiedades si tiene que entrar un valor cuando no hay definido ningún valor predeterminado), la columna con la cabecera C indica si la propiedad es configurable (puede cambiar el valor cuando añade el flujo de mensajes al archivo bar para desplegarlo).
Las propiedades básicas del nodo HTTPRequest se describen en la siguiente tabla.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
URL de servicio web | Sí | Sí | El URL del servicio Web. Debe proporcionarlo en el formato
http://<nombre_sistpral>[:<puerto>]/[<vía_acceso>]
donde
|
|
Tiempo de espera de petición | Sí | No | 120 | Tiempo, en segundos, que un nodo espera la respuesta del servicio Web. El rango válido es de 1 a (231)-1. No se puede entrar un valor que represente una espera ilimitada. |
Ubicación de proxy HTTP(S) | No | Sí | Servidor proxy al que se envían peticiones. Debe estar en el formato nombre_sistpral:puerto. | |
Seguir la redirección HTTP(S) | No | No | No seleccionado | Indica si se siguen las redirecciones HTTP. Si selecciona el recuadro, se siguen las redirecciones. Si lo deselecciona, no se siguen las redirecciones. |
Versión de HTTP | No | Sí | 1.0 | Versión de HTTP a utilizar para las peticiones. Los valores válidos son 1.0 y 1.1. |
Habilitar el mantenimiento de activado de HTTP/1.1 | No | Sí | Seleccionado (si la versión de HTTP es 1.1) | Utilice el mantenimiento de activado de HTTP/1.1 |
En la tabla siguiente se describen Las propiedades SSL de nodo HTTPRequest.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Protocolo | No | Sí | SSL | Protocolo SSL a utilizar al realizar una petición HTTPS. |
Cifrados SSL permitidos | No | Sí | Lista separada por comas de cifrados a utilizar al realizar una petición SSL. El valor predeterminado de una serie de caracteres vacía significa que hay que utilizar todos los cifrados disponibles. |
Las propiedades avanzadas del nodo HTTPRequest se describen en la siguiente tabla.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Utilizar todo el mensaje de entrada como petición | No | No | Seleccionado | Indica si todo el cuerpo del mensaje de entrada se pasará al servicio Web. Si selecciona este recuadro, se realizará esta acción. Si lo deselecciona, debe especificar Ubicación del mensaje de petición en el árbol. |
Ubicación del mensaje de petición en el árbol | Sí | No | InputRoot | La ubicación de inicio desde la que se crea la corriente de bits para enviar al servicio Web. Esta propiedad toma la forma de una referencia de campo ESQL. |
Sustituir mensaje de entrada por respuesta de servicio web | No | No | Seleccionado | Indica si el mensaje de respuesta del servicio Web sustituye la copia del mensaje de entrada como contenido del mensaje de salida creado. Si selecciona este recuadro, se realizará esta acción. Si lo deselecciona, debe especificar Ubicación del mensaje de respuesta en el árbol. |
Ubicación del mensaje de respuesta en el árbol | Sí | No | OutputRoot | La ubicación de inicio en la que se almacenan los elementos analizados de la corriente de bits de respuesta del servicio Web. Esta propiedad toma la forma de una referencia de campo ESQL. |
Generar cabeceras HTTP por omisión desde entrada | No | No | Seleccionado | Indica si se genera un HTTPRequestHeader. Si selecciona este recuadro, se realizará esta acción. Si lo deselecciona, en el mensaje de entrada debe haber un HTTPRequestHeader válido. |
Las propiedades de errores del nodo HTTPRequest se describen en la siguiente tabla.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Sustituir entrada con error | No | No | Seleccionado | Indica si se sustituye el contenido del mensaje de entrada por el contenido del mensaje de error. Si selecciona este recuadro, se realizará esta acción. Si lo deselecciona, debe especificar Ubicación del mensaje de error. |
Ubicación del mensaje de error | Sí | No | OutputRoot | La ubicación de inicio en la que se almacenan los elementos analizados de la corriente de bits de error del servicio Web. Esta propiedad toma la forma de una referencia de campo ESQL. |
Las propiedades predeterminadas del nodo HTTPRequest se describen en la siguiente tabla.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Dominio de mensajes | No | No | Dominio que se utilizará para analizar el mensaje de respuesta que se recibe del servicio Web. | |
Conjunto de mensajes | No | No | Nombre o identificador del conjunto de mensajes en el que se define el mensaje de respuesta. | |
Tipo de mensaje | No | No | Nombre del mensaje de respuesta. | |
Formato del mensaje | No | No | Nombre del formato físico del mensaje de respuesta. |
En la tabla siguiente se describen las propiedades de validación del nodo HTTPRequest.
Consulte el apartado Propiedades de validación para mensajes del dominio MRM para obtener una descripción completa de estas propiedades.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Validar | No | Sí | Ninguno | Determina si se realiza la validación. Los valores válidos son Ninguno, Contenido y valor, Contenido y Heredar. |
Acción para anomalía | No | No | Excepción | Determina qué sucede si falla la validación. Sólo puede establecer esta propiedad si establece Validar en Contenido o Contenido y valor. Los valores válidos son Rastreo de usuario, Anotaciones de error locales, Excepción y Lista de excepciones. |
Incluir todas las limitaciones de valor | No | No | Seleccionado | Esta propiedad no se puede editar. La acción predeterminada, indicada por el recuadro de selección marcado, es que se incluyan comprobaciones de restricción de valor básicas en la validación de Contenido y valor. |
Arreglo | No | No | Ninguno | Esta propiedad no se puede editar. |
En la tabla siguiente se describen las propiedades de las Opciones de mensajes generales para el nodo HTTPRequest.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Temporización del análisis | No | No | A petición | Esta propiedad controla cuándo se analiza un mensaje de entrada.
Los valores válidos son A
petición, Inmediato
y Completo. Consulte Análisis a petición para obtener una descripción completa de esta propiedad. |
Utilizar analizador compacto MQRFH2C para dominio MQRFH2 | No | No | No seleccionado | Esta propiedad controla si se utiliza el Analizador compacto MQRFH2C, en lugar del analizador MQRFH2, para las cabeceras MQRFH2. |
En la tabla siguiente se describen las propiedades de las Opciones de analizador XMLNSC para el nodo HTTPRequest.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Utilizar analizador compacto XMLNSC para dominio XMLNS | No | No | No seleccionado | ![]() ![]() |
Modalidad de retención de contenido mixto | No | No | Ninguno | Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra texto mixto en un mensaje de entrada. Los valores válidos son Ninguno y Todos. Si se selecciona Todos, significa que se crean elementos para el texto mixto. Si se selecciona Ninguno, significa que el texto mixto se ignora y no se crea ningún elemento. |
Modalidad de retención de comentarios | No | No | Ninguno | Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra comentarios en un mensaje de entrada. Los valores válidos son Ninguno y Todos. Si se selecciona Todos, significa que se crean elementos para los comentarios. Si se selecciona Ninguno, significa que se ignoran los comentarios y no se crean elementos. |
Modalidad de retención de instrucciones de proceso | No | No | Ninguno | Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra instrucciones de proceso en un mensaje de entrada. Los valores válidos son Ninguno y Todos. Si se selecciona Todos, significa que se crean elementos para las instrucciones de proceso. Si se selecciona Ninguno, significa que se ignoran las instrucciones de proceso y no se crean elementos. |
Las propiedades de descripción del nodo HTTPRequest se describen en la siguiente tabla.
Propiedad | O | C | Valor predeterminado | Descripción |
---|---|---|---|---|
Descripción corta | No | No | Descripción breve del nodo. | |
Descripción larga | No | No | Texto que describe el propósito del nodo en el flujo de mensajes. |