Consumir servicio web de AX 2012 con Postman

Es muy común que nos topemos con la necesidad de testear un Web Service, en este caso Postman lo utilizaremos como una herramienta para hacer peticiones a APIs y generar colecciones de peticiones que nos permitan probarlas de una manera rápida y sencilla. Previamente la dirección del servicio se tuvo que publicar como HTTP en lugar de net.tcp que es como se publican por default, en el post anterior …  pueden encontrar más información de cómo convertirlos.

Postman es muy útil a la hora de programar y hacer pruebas, puesto que nos ofrece la posibilidad de comprobar el correcto funcionamiento de nuestros desarrollos.

Para realizar las pruebas correspondientes lo primero que debemos hacer es instalar Fiddler, un proxy de depuración web. La herramienta nos permitirá escuchar la comunicación entre Postman y Dynamics AX 2012.

Al iniciar Fiddler, tenemos que activar la regla «Autenticar automáticamente» ubicada en la pestaña de Reglas. Debemos dejar que Fiddler ejecute este modo mientras usamos Postman. Esto ayudará a Postman para que pueda autenticarse con AX AIF.

Sin este paso, recibiríamos una respuesta “401 No autorizado” / “Error detallado de IIS 8.5 – 401.2 – No autorizado”.

Fiddler

Teniendo listo el túnel de comunicación, iniciamos Postman y creamos un request básico:

Postman

El siguiente paso es verificar que nuestro servicio sea de tipo http, por lo que nos vamos a:

Administración del sistema –> Configurar –> Services and Application Integration Framework –> Puertos de entrada

PuertosEntrada

Y copiamos el URI que en mi caso es:

http://localhost/GRWEstadoEmbService/GRWRFIDEstadoEmbIIS/xppservice.svc

En Postman pegamos el URI y le agregamos al final   ?WSDL

WSDL

Al enviar el request el status que nos debe de mandar es el de “200 Ok” para tener una conexión exitosa.

Debemos encontrar la acción SOAP para incluir en los encabezados HTTP del WSDL XML y poder hacer el consumo correctamente.

Soap Operation

Después de buscar soap:operation y copiar el soapAction, cambiamos el método HTTP de GET a POST y le quitamos el “?WSDL” a los parámetros de obtención.

En la pestaña de autorización le cambiamos el tipo a «No Auth» porque Fiddler lo está haciendo por nosotros.

En los encabezados agregamos lo siguiente:

KEY VALUE
Content-Type text/xml
SOAPAction http://tempuri.org/GRWRFIDEstadoEmb/updateShipmentStatus

Headers Postman

En el cuerpo debemos insertar una solicitud de SOAP válida.

Si no tenemos la estructura exacta para el cuerpo del request, lo que podemos hacer es utilizar SOAP UI.

Iniciamos SOAP UI y creamos un nuevo proyecto SOAP…

Create soap

Le ponemos algún nombre al proyecto y pegamos el WSDL:

http://localhost/GRWEstadoEmbService/GRWRFIDEstadoEmbIIS/xppservice.svc?WSDL

SoapProject

Creado el proyecto, abrimos el request

Request

Llenamos los datos necesarios y generamos el response.

Request-Response

Teniendo la estructura correcta del request, la copiamos y pegamos en Postman para generar satisfactoriamente el response.

Postman request