• Este debate tiene 4 respuestas, 3 mensajes y ha sido actualizado por última vez el hace 3 años, 6 meses por LUISSANCHEZ.
Viendo 5 entradas - de la 1 a la 5 (de un total de 5)

LLamar a Web service del propio Business Central desde Extensión



  • LUISSANCHEZ
    Participante
    LUISSANCHEZ

    Buenos días,

    Supongamos que tengo una tabla con 2 campos (nombre y apellido).

    Quiero hacer un web service de forma que desde otro punto de Business central, llame a ese web service pasandole como parametros un nombre y un apellido, y me devuelva true o false en función de si existe o no.

    Estaba pensando en crear una codeunit con una función que reciba esos parámetros, y busque en la tabla y devuelva true o false en funcion de lo que encuentre. Publicaría esa CodeUnit como web service.

    Pero ¿cómo haría la llamada a esa codeunit?.

    He estado mirando y hay un tipo de Objeto HttpClient, pero no he sido capaz.

    ¿¿Me podéis dar alguna pista??

    Gracias

     

    #1016730

    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    Hola Luis,

    No acabo de entender la necesidad de utilizar un WebService en este caso.
    Hablas de tener una función en algún sitio que diga si existe un registro o no. Y que quieres llamarlo desde otro punto de Business Central. ¿Porque no lo llamas a esa función directamente en lugar de hacerlo a través de WebService?

    Si estamos hablando del mismo Business Central, no tiene sentido tener que salir para encontrar una información que tienes internamente.

    Si estamos hablando de dos bases de datos distintas de Business Central que quieres que se comuniquen via WebService ya es otro tema. Entonces me parece correcto.
    Como comentas, está la HttpClient que es la que deberíamos usar para hacer la llamada, pero igual que tu, yo estuve haciendo algunas pruebas hace unos meses y no conseguí que funcionara.

    Un saludo,
    Cristina Nicolàs

    #1016817

    LUISSANCHEZ
    Participante
    LUISSANCHEZ

    Sí en efecto es para llamar a otro Business Central….

     

    #1016830

    BETEA
    Participante
    BETEA

    BUenos dias,

    Yo para llamar a un webService externo, he hecho algo asi:

    procedure SendContacts(var pContactTxt: text)
    var
    lMensaje: Text;
    Client: HttpClient;
    ResponseMessage: HttpResponseMessage;
    httpRequest: HttpRequestMessage;
    Headers: HttpHeaders;
    url: Text;
    ResponseText: Text;
    Content: HttpContent;
    ContentTxt: Text;
    begin
    Content.Clear();
    Content.GetHeaders(Headers);
    lMensaje := pContactTxt;
    Content.WriteFrom(lMensaje);
    Headers.Remove(‘Content-Type’);
    Headers.Remove(‘Charset’);
    Headers.Add(‘Content-Type’, ‘application/json’);
    Headers.Add(‘Charset’, ‘utf-8’);
    httpRequest.Content(Content);
    httpRequest.Method(‘POST’);

    url := ‘http://xxxxxx.com/webservice/create-contact’;
    client.Clear();
    Client.SetBaseAddress(url);
    if not Client.Send(httpRequest, ResponseMessage) then
    error(‘Llamada incorrecta’);
    if not ResponseMessage.IsSuccessStatusCode then
    Error(‘El WS ha devuelto el siguiente error:\’ +
    ‘Status Code : %1\’ +
    ‘Descripcion: %2’,
    ResponseMessage.HttpStatusCode,
    ResponseMessage.ReasonPhrase);

    ResponseMessage.Content.ReadAs(ResponseText);
    Message(‘Contacto(s) enviados’);
    end;

    Me imagino que llamar a un serviceo web publicado en BC sera lo mismo

     

    #1016839

    LUISSANCHEZ
    Participante
    LUISSANCHEZ

    Gracias,

    Intentaré hacer la prueba cuando tenga un momento.

    De nuevo muchas gracias

    #1017048
Viendo 5 entradas - de la 1 a la 5 (de un total de 5)

Debe iniciar sesión para responder a este tema.