ABAP - WebService entre ABAP y Genexus

 
Vista:

WebService entre ABAP y Genexus

Publicado por zenytt (2 intervenciones) el 12/03/2012 16:32:56
Hola a todos!

Tengo hecho un webservice en genexus X y quiero consumirlo con ABAP mediante código, no con los objetos proxy y eso.

Esto último es así, puesto que la informacion de ip y aplicacion donde voy a consumir el webservice en genexus lo saco de unas tablas de abap, o sea que a priori no los puedo saber…

este webservice graba algunas cosas en las tablas de la aplicacion genexus y devuelve a ABAP un codigo de error, un mensaje y alguna cosa mas

En un momento, el codigo pone

CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_method'
VALUE = 'POST'.

para hacerlo con metodo POST, como tengo que configurar GX y/o ABAP? hasta ahora no logre que llegue o devuelva nada. Probe utilizando cosas como CALL METHOD http_client->REQUEST->SET_FORM_FIELD y CALL METHOD http_client->receive, pero no me ha funcionado.

para hacerlo con metodo GET, logre que llegaran las cosas a genexus y las grabe en base de datos.
esto lo logre cuando, al relizar el siguiente llamado CALL METHOD cl_http_client=>create_by_url le paso la url armada "a mano" con los valores que quiero enviar, pero no logro devolver nada…

alguien tiene idea como puedo armar bien el webservice? cualquiera de los dos metodos me sirve
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

WebService entre ABAP y Genexus

Publicado por Alejandro (226 intervenciones) el 13/04/2023 18:49:04
Para consumir un Web Service en ABAP sin usar objetos proxy, puedes usar la clase 'CL_HTTP_CLIENT'. Con esta clase, puedes enviar una solicitud HTTP a la URL del Web Service y recibir la respuesta.

Aquí te dejo un ejemplo básico para enviar una solicitud POST y recibir la respuesta en ABAP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DATA: http_client TYPE REF TO cl_http_client,
      http_request TYPE REF TO if_http_request,
      http_response TYPE REF TO if_http_response,
      url TYPE string,
      content TYPE string.
 
url = 'http://<URL del Web Service>'.
content = '<Contenido del mensaje SOAP>'.
 
CREATE OBJECT http_client.
CALL METHOD http_client->request->set_header_field
  EXPORTING
    name  = '~request_method'
    value = 'POST'.
CALL METHOD http_client->request->set_uri
  EXPORTING
    uri = url.
CALL METHOD http_client->request->set_body
  EXPORTING
    data = content.
CALL METHOD http_client->send.
CALL METHOD http_client->receive.
http_response = http_client->response.

El contenido del mensaje SOAP debe ser creado de acuerdo al WSDL del Web Service que deseas consumir.

Ten en cuenta que es importante verificar si la respuesta recibida es válida antes de procesarla. En caso de errores en la comunicación, la clase 'CL_HTTP_CLIENT' proporciona información de depuración que puede ayudar a identificar el problema.

Espero que esto te ayude a resolver tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar