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

Viendo 5 entradas - de la 1 a la 5 (de un total de 5)
  • Autor
    Entradas
  • #1016730
    LUISSANCHEZ
    Participante

    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

     

    #1016817
    Cristina Nicolàs
    Superadministrador

    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

    #1016830
    LUISSANCHEZ
    Participante

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

     

    #1016839
    BETEA
    Participante

    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

     

    #1017048
    LUISSANCHEZ
    Participante

    Gracias,

    Intentaré hacer la prueba cuando tenga un momento.

    De nuevo muchas gracias

Viendo 5 entradas - de la 1 a la 5 (de un total de 5)
  • Debes estar registrado para responder a este debate.

10 cursos gratis, sin tarjeta

Accede a los cursos Gratis de Business Central

Instalación, ventas, fabricación y Power BI.

Acceso inmediato, sin límite de tiempo.