jump to navigation

PI – Enviar parametros via HTTP usando POST octubre 3, 2014

Posted by gstortoni in Uncategorized.
trackback

Nueva entrada ayuda memoria.

Tuvimos un problema en la empresa, donde debimos integrarnos con un proveedor que supuestamente nos daría un WebService, sin embargo al momento de iniciar el proyecto nos estrega un Formulario Web a llamarse via POST, al cual hay que setearle 4 parámetros. La respuesta de dicha llamada, es un texto, sin formato XML

Con el adaptador HTTP tradicional de PI (no el HTTP_AAE) no se pueden setear parámetros (o hasta donde yo sé, no se puede), por lo que tuvimos que hacer un poco de magia.

Los pasos realizados:

Utilizamos ABAP Mapping tanto para el request como para el response. (con esto se pierde la posibilidad de utilizar Integrated Configuration, si se quiere poder ejecutar mediante esta opción, es necesario realizarlo con JavaMapping).

ABAP MApping:

method IF_MAPPING~EXECUTE.

datal_param1 type string,
l_param2 type string,
l_param3 type string,
l_param4 type string,
salida type string.

l_param1 ‘PARAM1=Valor parametro 1’.
l_param2 ‘PARAM2=Valor parametro 2’.
l_param3 ‘PARAM3=Valor parametro 3’.
l_param4 ‘PARAM4=Valor parametro 4’.

concatenate l_param1 l_param2 l_param3 l_param4 into salida separated by ‘&’.

CALL FUNCTION ‘SCMS_STRING_TO_XSTRING’
EXPORTING
text   salida
IMPORTING
BUFFER result.
endmethod.

En el campo result, quedará la salida del Abap Mapping request en XSTRING.

Una llamada POST se compone del Header y parámetros.
Un ejemplo de post:

CABECERA
POST /bin/login HTTP/1.1
Host: 127.0.0.1:8000
Accept: image/gif, image/jpeg, */*
Referer: http://127.0.0.1:8000/login.html
Accept-Language: en-us
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Content-Length: 37
Connection: Keep-Alive
Cache-Control: no-cache
PARAMETROS
User=Usuario&pw=123456&action=login

El adaptador HTTP por si solo, genera la cabecera. Con las configuraciones dinámicas, podemos alterar en tiempo de ejecución los datos de la cabecera, o bien agregarle parámetros a la llamada URL. Sin embargo no pude agregar parámetros como campos al POST.

Luego, configuré el adaptador HTTP -> Content Type = application/x-www-form-urlencoded, por defecto viene : text/xml

El resultado de lo anterior, visto en http://www.posttestserver.com/

Time: Fri, 03 Oct 14 15:33:40 -0700
Source ip: 190.216.144.170

Headers (Some may be inserted by server)
REQUEST_URI = /post.php
QUERY_STRING = 
REQUEST_METHOD = POST
GATEWAY_INTERFACE = CGI/1.1
REMOTE_PORT = 65299
REMOTE_ADDR = 190.216.144.170
HTTP_ACCEPT_ENCODING = gzip
HTTP_HOST = www.posttestserver.com
HTTP_USER_AGENT = SAP NetWeaver Application Server (1.0;730)
HTTP_ACCEPT = */*
HTTP_CONNECTION = close
CONTENT_LENGTH = 99
CONTENT_TYPE = application/x-www-form-urlencoded
UNIQUE_ID = VC8kRNBx6hIAAEGhqYcAAAAL
REQUEST_TIME_FLOAT = 1412375620.4351
REQUEST_TIME = 1412375620

Post Params:
key: 'PARAM1' value: 'Valor parametro 1'
key: 'PARAM2' value: 'Valor parametro 2'
key: 'PARAM3' value: 'Valor parametro 3'
key: 'PARAM4' value: 'Valor parametro 4'
Empty post body.

Upload contains PUT data:
PARAM1=Valor parametro 1&PARAM2=Valor parametro 2&PARAM3=Valor parametro 3&PARAM4=Valor parametro 4

http://www.posttestserver.com/data/2014/10/03/15.33.40719642992

Eso es todo!

Anuncios

Comentarios»

No comments yet — be the first.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

A %d blogueros les gusta esto: