CALL WEB SERVICE

4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 11 (Modificado)


CALL WEB SERVICE (urlAcceso; soapAccion; nomMetodo; espacioNombre{; tipoCompuesto{; *}})

ParámetroTipoDescripción
urlAccesoCadenaURL de acceso al servicio Web
soapAccionCadenaContenido del campo SOAPAction
nomMetodoCadenaNombre del método
espacioNombreCadenaEspacio del nombre (Namespace)
tipoCompuestoEntero largoConfiguración de tipos compuestos
(tipos simples si se omite)
**No cerrar la conexión

Descripción

El comando CALL WEB SERVICE se utiliza para llamar un servicio Web enviando una petición HTTP. Esta petición contiene el mensaje SOAP creado previamente utilizando el comando SET WEB SERVICE PARAMETER.

Toda llamada posterior al comando SET WEB SERVICE PARAMETER provocará la creación de una nueva petición. La ejecución de un comando CALL WEB SERVICE también borra todo resultado del servicio Web llamado anteriormente y lo reemplaza con los nuevos resultados.

En urlAcceso, pase el URL completo que permite acceder al servicio Web (no confunda este URL con el del archivo WSDL, que describe el servicio Web).

Acceso en modo seguro (SSL): si quiere utilizar un servicio Web en modo seguro utilizando SSL, pase https:// delante del URL en lugar de http://. Esta configuración activa automáticamente la conexión en modo seguro.

En soapAccion, pase el contenido del campo SOAPAction de la petición. Este campo contiene por lo general el valor "ServiceName#MethodName".

En nomMetodo, pase el nombre del método remoto (que pertenece al servicio Web) que quiere ejecutar.

En espacioNombre, pase el espacio del nombre XML (namespace) utilizado para la petición SOAP. Para mayor información sobre los nombres de espacios XML, consulte el Manual de Diseño.

El parámetro opcional tipoCompuesto especifica la configuración de los parámetros Web Service enviados o recibidos (definidos utilizando los comandos SET WEB SERVICE PARAMETER y GET WEB SERVICE RESULT).

El valor del parámetro tipoCompuesto depende del modo de publicación del servicio Web (DOC o RPC, ver el Manual de Diseño) y sus propios parámetros.

En tipoCompusto, debe pasar una de las siguientes constantes, ubicadas en el tema Web Services (Client):

ConstanteTipoValor
Web Service DynamicEntero largo0 (por defecto)
Web Service Manual InEntero largo1
Web Service Manual OutEntero largo2
Web Service ManualEntero largo3

Cada constante corresponde a una "configuración". Una configuración representa una combinación entre el modo de publicación (RPC/DOC) y los tipos de parámetros (entrada/salida, simple o compuesto) implementado.

Nota: Recuerde que la característica "entrada" o "salida" de los parámetros se evalúa desde el punto de vista del método proxy/servicio Web:

un parámetro "entrada" es un valor pasado al método proxy y por lo tanto al servicio Web,

un parámetro "salida" es devuelto por el servicio Web y por lo tanto por el método proxy (generalmente vía $0).

La siguiente tabla muestra todas las configuraciones posibles como también las constantes correspondientes:

Parámetros entrada
Parámetros entrada SimplesCompuestos
SimplesWeb Service DynamicWeb Service Manual In
(Modo RPC)(Modo RPC)
CompuestosWeb Service Manual OutWeb Service Manual
(Modo RPC)(Modo RPC o Modo DOC)

Las cinco configuraciones descritas a continuación pueden implementarse. En todos los caso, 4D administrará el formato de la petición SOAP a enviar al servicio Web como también su sobre. Es su decisión darle formato a los contenidos de esta petición de acuerdo a la configuración utilizada.

Nota: A pesar del hecho de que los tipos XML compuestos, los arrays de datos son tratados por 4D como tipos simples.

Modo RPC, entrada y salida simples

Esta configuración es la más fácil de utilizar. En este caso, el parámetro tipoCompuesto contiene la constante Web Service Dynamic o se omite.

Los parámetros enviados y las respuestas recibidas pueden ser manipulados directamente, sin procesamiento previo.

Consulte el ejemplo del comando GET WEB SERVICE RESULT.

Modo RPC, entrada compuesta y salida simple

En este caso, el parámetro tipoComplejo contiene la constante Web Service Manual In. Con esta configuración, debe pasar "manualmente" al servicio Web cada elemento XML fuente bajo la forma de un BLOB, con la ayuda del comando SET WEB SERVICE PARAMETER.

Depende de usted formatear el BLOB inicial como un elemento XML válido. Este BLOB debe contener como primer elemento el primer elemento "hijo" del elemento <Body> de la petición final.

Ejemplo

   C_BLOB($1)
   C_BOOLEAN($0)

   SET WEB SERVICE PARAMETER("MiXMLBlob";$1)
   CALL WEB SERVICE("http://mi.dominio.com/mi_servicio";"MiAccionSoap";"ElMetodo";
                                    "http://mi.nombrespacio.com/";Web Service Manual In)
   GET WEB SERVICE RESULT($0;"MiVarSalida";*)

Modo RPC, entrada simple y salida compuestas

En este caso, el parámetro tipoCompuesto contiene la constante Web Service Manual Out. Cada parámetro de salida será devuelto por el servicio Web bajo la forma del elemento XML almacenado en un BLOB. Recupera este parámetro utilizando el comando GET WEB SERVICE RESULT. Luego puede analizar el contenido del BLOB recibido utilizando los comandos XML de 4D.

Ejemplo

   C_BLOB($0)
   C_BOOLEAN($1)

   SET WEB SERVICE PARAMETER("MiVarEntrada";$1)
   CALL WEB SERVICE("http://mi.dominio.com/mi_servicio";"MiAccionSoap";"ElMetodo";
                                    "http://mi.nombrespacio.com/";Web Service Manual Out)
   GET WEB SERVICE RESULT($0;"MiXMLSalida";*)

Modo RPC, entrada y salida compuestas

En este caso, el parámetro tipoCompuesto contiene la constantes Web Service Manual. Cada parámetro de entrada y de salida debe ser almacenado en la forma de los elementos XML en los BLOBs, como se describió en las dos configuraciones anteriores.

Ejemplo

   C_BLOB($0)
   C_BLOB($1)

   SET WEB SERVICE PARAMETER("MiBlobXMLEntrada";$1)
   CALL WEB SERVICE("http://mi.dominio.com/mi_servicio";"MiAccionSoap";"ElMetodo";
                                    "http://mi.nombrespacio.com/";Web Service Manual)
   GET WEB SERVICE RESULT($0;"MiXMLSalida";*)

Modo DOC

Un método proxy de llamada de un servicio Web DOC es similar a un método proxy de llamada de un servicio Web RPC utilizando los parámetros de entrada y de salida compuestos.

La única diferencia entre estas dos configuraciones es el nivel del contenido XML de los parámetros BLOB pasados y recibidos. Desde el punto de vista de 4D, la construcción y el envío de la petición SOAP son idénticos.

Ejemplo

   C_BLOB($0)
   C_BLOB($1)

   SET WEB SERVICE PARAMETER("MiXMLEntrada";$1)
   CALL WEB SERVICE("http://mi.dominio.com/mi_servicio";"MiAccionSoap";"ElMetodo";
                                    "http://mi.nombrespacio.com/";Web Service Manual)
   GET WEB SERVICE RESULT($0;"MiXMLSalida";*)

Nota: En el caso de los servicios Web DOC, el valor de las cadenas ("MiXMLEntrada" y "MiXMLSalida") pasadas como parámetros no es de importancia; incluso es posible pasar cadenas vacías"". De hecho, estos valores no se utilizan en la petición SOAP contenida en el documento XML. Es obligatorio pasar estos parámetros.

Para utilizar un servicio Web publicado en modo DOC (o en modo RPC con tipos compuestos), es recomendable proceder de esta forma:

Generar el método proxy utilizando el Asistente Client Web Services.

El método proxy será llamado de la siguiente manera: $XMLresultadoBlob:=$DOCproxy_Metodo($XMLparamBlob)

Familiariarisece con los contenidos de las peticiones SOAP a enviar al servicio Web utilizando una herramienta de prueba en línea (por ejemplo, http://soapclient.com/soaptest.html). Este tipo de herramienta se utiliza para generar los formularios de prueba HTML, a partir del WSDL del servicio Web.

Copie el contenido XML generado a partir del primer hijo de <body>.

Escriba el método permitiendo ubicar los valores reales de los parámetros en el código XML; este código debe estar ubicado en el BLOB $XMLparamBlob.

Para analizar la respuesta, puede igualmente utilizar una herramienta de prueba en línea, o utilizar el WSDL que especifica los elementos devueltos.

El parámetro * puede utilizarse para optimizar llamadas. Cuando se pasa, el comando no cierra la conexión utilizada por el proceso al final de su ejecución. En este caso, la próxima llamada a CALL WEB SERVICE reutilizará la misma conexión si se pasa el parámetro *, etc. Para cerrar la conexión, simplemente ejecute el comando CALL WEB SERVICE sin el parámetro *. Este mecanismo puede utilizarse para acelerar sensiblemente los procesos en caso de llamadas sucesivas a varios servicios Web en el mismo servidor, en particular en una configuración WAN (vía Internet, por ejemplo). Note que este mecanismo depende del parámetro "keep-alive" del servidor Web. Este parámetro por lo general define un número máximo de peticiones vía la misma conexión, e incluso puede negar peticiones. Si las peticiones CALL WEB SERVICE encadenadas en la misma conexión alcanzan este número máximo, o si las conexiones keep-alive no son permitidas, 4D creará una nueva conexión para cada petición.

Ver también

GET WEB SERVICE RESULT, SET WEB SERVICE PARAMETER.

Variables y conjuntos sistema

Si la petición se enruta correctamente y el servicio Web la acepta, la variable sistema OK toma el valor 1. De lo contrario, toma el valor 0 y se devuelve un error.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente