TECHNISCHER BLOG

OData REST Web Service Beispiel (Subscribe)09 Nov2019

Kategorie: Installation Tags: installation, webservices, odata, soap

Wie OData in Business Central verwendet wird

In diesem Beitrag zeigen wir ein Beispiel von OData REST Web-Service in Dynamics 365 Business Central (TM) On-Premise. Eine notwendige Einrichtung zur Verwendung von .NET Interoperability wird hier gezeigt. Das Beispiel kommt aus einer Session von NAV TECH Days 2015. Damals wurde die Version Dynamics NAV 2016 (9.00) verwendet. Jetzt bilden wir die Web-Service in AL und in Business Central 2019 wave 2 (Version 15).

Wir wollen in unserem Business Case einen QR-Code Bild des Debitoren Webseite auf der Debitoren-Karte speichern, damit Anwender schnell mit einem Scanner die Webseite des Kunden öffnen können. Zum diesem Zweck nutzen wir eine OData REST Service, die unter diese Adresse http://barcodes4.me/ zur Verfügung gestellt wird. Ähnlich, wie in NAV Tech Days, bauen wir eine Funktionalität, die ein QR-Code Bild als Stream auf der 'Customer' Tabelle in einem neuen Feld gespeichert wird. Dazu brauchen wir .NET Klassen. Die OData wird mit .NET Klasse System.Net.Http.HttpResponseMessage behandelt. Wir bauen eine spezielle CodeUnit, die alle diese Aufgaben übernimmt. Bevor wir mit OData los gehen, wir müssen folgende andere Anpassungen im Business Central vornehmen:

  1. Eine Extension der Tabelle "Customer" (Debitor) für ein neues Feld zum Speichern von heruntergeladenen Bildern.

Dynamics 365 Business Central (Navision) - OData Rest Extension in der Tabelle

  1. Eine neue Card Part Page "QR Fact Box", zum Anschauen des Bildes im Faktbox-Pane der Seite 'Debitorenkarte'.

Dynamics 365 Business Central (Navision) - OData Rest - Factbox Seite

  1. Eine Extension der Page "Customer Card" zum Anzeigen des neuen Feldes.

Dynamics 365 Business Central (Navision) - OData REST - Seitenextension zum Speichern des Bildes

Jetzt können wir mit unserer Hauptaufgabe anfangen. Die ist einen Web-Service Call mit REST aufbauen und der als Response empfangenes Bild zu bearbeiten und auf der Tabelle zu speichern. Der Synthax der REST Request ist auf der Seite http://barcodes4.me/apidocumentation#qr zu finden:

Dynamics 365 Business Central (Navision) - Synthax der Webdienst, die im Beispiel verwendet wird.

In der Codeunit müssen definiert werden:

  1. .NET Methoden zur HTTP-Kommunikation mit REST-Api.
  2. Methoden zur Bearbeitung des Streams.
  3. Eine Text-Konstante und Variable zum Aufbau des REST-Anfrage.

Dynamics 365 Business Central (Navision) - OData REST .NET Klasse zum Bearbeiten des Calls

Wir bauen eine allgemeine AL Methode, die erlaubt alle REST Methoden zu aufrufen (GET,POST,PUT,DELETE). Es kann zu anderen Zwecken verwendet werden. Im Beispiel brauchen wir nur GET. Die Methode hat einen Responseparamterart 'Text'. Im Beispiel wird er auch nicht verwendet, weil die REST-Response einen Stream übergibt.

Dynamics 365 Business Central (Navision) - HttpResponseMessage .NET Klasse.

Der Ablauf wird in den folgenden Sektionen ausgeführt:

  1. Die Codeunit ist ein Eventsubsriber zur Page "Debitorenkarte" zum 'OnAfterValidateEvent' des Feldes 'Home Page'.
  2. Sobald der Trigger ausgelöst wird und das Feld 'Homepage' einen Wert hat, wird einen REST-Call ausgeführt.
  3. Die REST-Request wird im Textwert 'RestUrl' aufgebaut und als Parameter in der Funktion 'CallRest' übergegeben.
  4. Wäre der REST-Response ein Text, könnten wir direkt weiter den Return-Parameter aus der Funktion CallREST bearbeiten. So ist es nicht der Fall, deswegen wird die Response weiter mit der HttpResponseMessage .NET Klasse als Stream zum neuen Feld (MediaSet) weggeschrieben.

Dynamics 365 Business Central (Navision) - Event Subscriber zu OData REST

Das Ergebnis ist hier zu sehen:

Dynamics 365 Business Central (Navision) - das finalle Ergebnis aus dem Beispiel. OData REST Api.

Dynamics 365 Business Central(TM) (Navision) Entwickler und Berater View Konrad Buczkowski's LinkedIn profile Konrad Buczkowski

Wir verwenden Cookies
Einige von ihnen sind essenziell (z.B. speichern von gewählten Optionen des Lizenzrechners), während andere uns helfen unsere Website bei Werbung zu analysieren. Sie können dies akzeptieren oder ablehnen sowie diese Einstellungen jederzeit aufrufen und Cookies auch nachträglich abwählen (im Fußbereich unserer Website unter "Cookies Einrichtung"). Nähere Hinweise in unserer Datenschutzerklärung.
Individuelle Cookie Einstellungen
Notwendig ( 3 / 3 )
Notwendige Cookies helfen dabei, eine Webseite nutzbar zu machen, indem sie Grundfunktionen wie Seitennavigation und Zugriff auf sichere Bereiche der Webseite ermöglichen. Die Webseite kann ohne diese Cookies nicht richtig funktionieren.
v
Details in dieser Gruppe einblendenDetails in dieser Gruppe ausblenden
  • AkzeptiertNameKonfigurierungscookieAnbieterseccount.comZweckSpeichert vom Besucher in einem Feld ausgewählte Einstellungen.Cookie Namemod_cookies_125Cookie Laufzeit1 Jahr
  • AkzeptiertNameSessionAnbieterSeccount.comZweckCookies, die für die Sessionsitzung auf der Website verantwortlich sind.Cookie Names81a877_vv, s81a877_verify, s81a877, s81a877_v, c_verifyCookie Laufzeit1 Tag, Session
  • AkzeptiertNameCookiesAnbieterSeccount.comZweckCookies, die die Verwendung von Cookies bestätigen.Cookie Namec_verifyCookie Laufzeit38 Monate
Statistiken ( 1 / 1 )
Statistik-Cookies helfen Webseiten-Besitzern zu verstehen, wie Besucher mit Webseiten interagieren, indem Informationen anonym gesammelt und gemeldet werden.
v
Details in dieser Gruppe einblendenDetails in dieser Gruppe ausblenden
  • AkzeptiertNameGoogle AnalyticsAnbieterGoogle LLCZweckRegistriert eine eindeutige ID, die verwendet wird, um statistische Daten dazu, wie der Besucher die Website nutzt, zu generieren.Datenschutzerklärunghttps://policies.google.com/privacyCookie Name_ga,_gat,_gidCookie Laufzeit24 Monate
aaa1604053742