Barcode-as-a-Service in C/AL

Daniel Gorski
CEO
2 Min. Lesezeit

The smartest way to manage your barcodes
#Barcodes für alle!
👉 www.beyondbarcodes.de bietet eine schnelle und sehr einfache Möglichkeit, eine Barcode-API zu implementieren.
👉 Wir wollen alle glücklich machen, die sich mit Barcodes herumschlagen müssen.
👉 Holen Sie sich einen Account und werden Sie Barcode-Millionär! Wir bieten >1.000.000 Aufrufe pro Monat.
Unsere Featureliste wächst, das Backlog ist voll, wir erweitern unseren Funktionsumfang laufend!
In C/AL kann ein Barcode über unsere API angesprochen werden. Im folgenden Beispiel wird die Kred.-Artikelnr. als String übergeben, in einen Barcode (Code128) konvertiert und als Bild (Standard-Feld BLOB
) am Artikel gespeichert.
Get-Barcode-Function
IF ('' IN [Item."Vendor Item No.", Item."No."]) THEN
EXIT(FALSE);
method := STRSUBSTNO('%1/%2?token=%3&height=%4',
type::CODE128,
Item."Vendor Item No.",
'YOUR-TOKEN',
100
);
Consume('https://api.beyondbarcodes.de/v1/barcode/', method, 'GET', HttpResponseMessage);
MemoryStream := HttpResponseMessage.Content.ReadAsStreamAsync.Result;
Item.Picture.CREATEOUTSTREAM(OutStr);
MemoryStream.WriteTo(OutStr);
EXIT(Item.MODIFY);
Consume-Function
HttpClient := HttpClient.HttpClient();
HttpClient.BaseAddress := Uri.Uri(BaseUrl);
HttpResponseMessage := HttpClient.GetAsync(Method).Result;
HttpResponseMessage.EnsureSuccessStatusCode();
Hier steht die Codeunit 50000 als Implementationsbeispiel zum Download zur Verfügung:
C50000_C_AL.txt
OBJECT Codeunit 50000 Beyondbarcodes Webservice
{
OBJECT-PROPERTIES
{
Date=11.01.21;
Time=12:00:00;
Version List=beyondbarcodes.de;
}
PROPERTIES
{
TableNo=27;
OnRun=BEGIN
END;
}
CODE
{
PROCEDURE GetBarcode@50001(VAR Item@50000 : Record 27) : Boolean;
VAR
method@50006 : Text;
type@50005 : 'CODE128,CODE128A,CODE128B,CODE128C,CODE39,EAN13,EAN8,EAN5,EAN2,UPC';
WebUtility@50004 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.WebUtility";
HttpResponseMessage@50003 : DotNet "'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.System.Net.Http.HttpResponseMessage";
MemoryStream@50002 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.MemoryStream";
OutStr@50001 : OutStream;
BEGIN
IF ('' IN [Item."Vendor Item No.",Item."No."]) THEN
EXIT(FALSE);
method := STRSUBSTNO('%1/%2?token=%3&height=%4',
type::CODE128,
Item."Vendor Item No.",
'YOUR-TOKEN',
100
);
Consume('https://api.beyondbarcodes.de/v1/barcode/',method,'GET',HttpResponseMessage);
MemoryStream := HttpResponseMessage.Content.ReadAsStreamAsync.Result;
Item.Picture.CREATEOUTSTREAM(OutStr);
MemoryStream.WriteTo(OutStr);
EXIT(Item.MODIFY);
END;
[TryFunction]
PROCEDURE Consume@50000(BaseUrl@50003 : Text;Method@50002 : Text;RestMethod@50001 : Text;VAR HttpResponseMessage@50000 : DotNet "'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.System.Net.Http.HttpResponseMessage");
VAR
HttpClient@50005 : DotNet "'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.System.Net.Http.HttpClient";
Uri@50004 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Uri";
BEGIN
HttpClient := HttpClient.HttpClient();
HttpClient.BaseAddress := Uri.Uri(BaseUrl);
HttpResponseMessage := HttpClient.GetAsync(Method).Result;
HttpResponseMessage.EnsureSuccessStatusCode();
END;
BEGIN
END.
}
}