[Gelöst] RESTful API ansteuern über NAV

26. März 2020 19:52

Hallo Zusammen,

ich versuche einen ZPL Web Service (http://labelary.com/service.html) in NAV einzusetzen.
Ziel ist es über eine Fkt. eine Datei zu senden.
Ich habe verschieden Wege probiert aber bisher ohne Erfolg.

Versucht habe ich zum einen den Service über die Codeunit 1297 Http Web Request Mgt. und mit DotNet-Variablen eine Lösung zu finden. Im Prinzip macht die CU1297 fast nichts anderes als der ausprogrammierte DotNet-Code...ein Versuch war es Wert...
Vielleiht hat jemand ja einen Tipp, einen hilfreichen Link oder einen Bsp.Code….


Grüße
Emaz
Zuletzt geändert von Emaz am 31. März 2020 09:38, insgesamt 1-mal geändert.

Re: RESTful API ansteuern über NAV

27. März 2020 08:40

Hi,

also "Ich habe verschieden Wege probiert aber bisher ohne Erfolg. " bringt nicht viel - kannst du uns sagen, was denn passiert?
Fehlermeldungen?
Welchen Text kippst du rein? -> Der ZPL Webservice hat ein paar Limits, nicht das du da ein Problem hast.

Re: RESTful API ansteuern über NAV

30. März 2020 19:35

hi sweikelt,

vielen Dank für deine Rückmeldung.
Also an der Textlänge kann es nicht liegen. Ich sende nur ein "Hello World". ('^xa^cfa,50^fo100,100^fdHello World^fs^xz')

Aber ich habe meinen Fehler gefunden.

So funktioniert es:

Code:
 URL := 'http://api.labelary.com/v1/printers/12dpmm/labels/4x6/0/';

HttpWebRequestMgt.Initialize(URL);
HttpWebRequestMgt.DisableUI;
HttpWebRequestMgt.SetMethod('POST');
HttpWebRequestMgt.SetReturnType('image/png');
HttpWebRequestMgt.SetContentType('application/x-www-form-urlencoded');
HttpWebRequestMgt.SetExpect(FALSE);
HttpWebRequestMgt.AddBodyAsText(ZPL);

TempBlob.INIT;
TempBlob.Blob.CREATEINSTREAM(InStr);
 
IF HttpWebRequestMgt.GetResponse(InStr,HttpStatusCode,ResponseHeaders) THEN BEGIN
  IF LabelHeader.GET(LabelCode) THEN BEGIN 
    LabelHeader.Label := TempBlob.Blob;
    LabelHeader.MODIFY;
  END;
END ELSE
  MESSAGE(ErrorMsg);


Der ZPL-Code wird mir als .png zurückgegeben und in ein Blob-Feld geschrieben.

Grüße
Emaz