xsharp.eu • VO und restAPI
Page 1 of 2

VO und restAPI

Posted: Thu Sep 08, 2022 7:02 am
by lagraf
Hallo zusammen,
ich soll aus einer VO App mit einem restAPI im Internet kommunizieren, hier die Beschreibung: https://api.sevdesk.de/
Geht das irgendwie, ich sehe dabei ein paar Probleme:
- https:// Aufruf statt http://
- zusätzlich zu GET und POST gibt es PUT und DELETE
- API Key über Authorization Header übergeben
Hat jemand sowas schon mal gemacht, wie kann man das lösen?

VO und restAPI

Posted: Thu Sep 08, 2022 7:33 am
by wriedmann
Hallo Franz,
ich habe das über eine COM-Komponente in X# gelöst, und zwar auf einer höheren Ebene, weil ich das Parsen der JSON-Ergebnisse nicht in VO schreiben wollte, sondern die entsprechenden Routinen im .NET Framework genutzt habe.
Nach VO kommt dann einfach ein COM-Objekt mit den entsprechenden Eigenschaften zurück.
Wolfgang
P.S. sorry, wenn da immer ähnliche Antworten kommen. Für einen Pensionisten, der für seine Kunden kostenfrei arbeitet, bist Du aber ganz schön aktiv

VO und restAPI

Posted: Thu Sep 08, 2022 9:37 am
by lagraf
Hallo Wolfgang,
ich arbeite nicht immer kostenfrei für meine Kunden, das gilt nur für die Verwandtschaft und fürs Registrierkassenmodul, das meine Kunden ja bereits bei ITG Consulting gekauft haben.
Für das neue Projekt muss ich die Artikel aus der lokalen Lagerverwaltung ins SevDesk im Internet übertragen, dazu benötige ich 3 Aufrufe: Zurück kommt jeweils eine Antwort im JSON oder XML Format.
Kann das dein Com-Modul abdecken?
Würdest du den Sourcecode für diese 3 Aufrufe und JSON verkaufen?
Alternativ könnte ich die Aufrufe wahrscheinlich über Commandline und Curl abwickeln.

VO und restAPI

Posted: Thu Sep 08, 2022 11:22 am
by mk_schmid
Hallo Franz,

wie man es in VO macht kann ich nicht beantworten aber in .NET und somit vermutlich auch in x# sollte es via einem HTTPwebrequest machbar sein. Damit werden alle Methoden unterstützt und die Vorgabe welches TLS Protokoll verwendet werden soll ist auch möglich.
https://docs.microsoft.com/de-de/dotnet ... ew=net-6.0
https://docs.microsoft.com/de-de/dotnet ... ew=net-6.0

Zum Erzeugen von Json Objekten hat sich das JsonConvert.SerializeObject bewährt.
https://www.newtonsoft.com/json/help/ht ... Object.htm

Über den „Advanced REST Client“ von Google lassen sich solche Webservice Calls auch ohne Implementierung erst mal sehr einfach testen. Soweit ich mich erinnere erzeugt dieser auch Code für den Aufruf für verschiedene Sprachen.

https://chrome.google.com/webstore/deta ... dfbfbjeloo

Ich hatte mal vor Jahren in VB6 über die COM Komponenten MSXML2.ServerXMLHTTP und MSXML2.DOMDocument einen Webservice Aufruf umgesetzt, bin mir aber nicht sicher ob damit alle Anforderungen abgedeckt werden können.

Christian

VO und restAPI

Posted: Thu Sep 08, 2022 2:44 pm
by g.bunzel@domonet.de
Hallo Franz,

....das sollte auch direkt mit VO ohne COM funktionieren.
Von Norbert Kolb gibt es dazu eine Methode 'GetDocumentByGetOrPost() als Erweiterung zur cHttp-Klasse.
An diese Methode werden als Parameter die Hostadresse, der Folder für den Aufruf der API-Methode, die Daten zur Verarbeitung im JSON-Format, die auszuführende Methode sowie HTTP oder HTTPS und evtl. Flags übergeben. Von diesem 'GetDocumentByGetOrPOst' kommt dann ein String der aufgerufenen Methode zurück - mit dem Abfrageergebnis oder der Fehlermeldung.

cHost := 'rgw..........-de-de.apiconnect.appdomain.cloud'
cFolder := '/musterordner/default/rest/v2/labels'
cHeader := 'x-ibm-client-id: ' + SELF:cClientId + CrLf + ;
'content-type: application/json' + CrLf + ;
'accept: application/json' + CrLf + CrLf
cPostData := '{"format":"P","count":3,"shipment":{"division":"T","product":"Y","shipmentDate":"' + SELF:cShipmentDate + '","deliveryDate":"' + SELF:cDeliveryDate + '","forwarder":......................{"code":"100","value":"Customer_Order_Number"}]}}'

cPage := SELF:oHttp:GetDocumentByGetOrPost(cHost,;
cFolder,;
cPostData,;
cHeader,;
"POST",;
INTERNET_DEFAULT_HTTPS_PORT,;
INTERNET_FLAG_SECURE)

Die Rückgabe wird dann in cPage ausgewertet.

Hier der Link zum Download von der VOUG-Bodensee - ziemlich weit unten:
http://www.voug-bodensee.net/DownLoad/D ... ublic.html

HTH

Gerhard Bunzel

VO und restAPI

Posted: Thu Sep 08, 2022 5:03 pm
by wriedmann
Hallo Franz,
was ich gemacht habe, ist was anderes: ich habe eine COM-DLLgeschrieben, die die REST-Aufrufe komplett kapseln, und auch nicht ein JSON zurückgeben, sondern ein normales COM-Objekt, das alle Eigenschaften beinhaltet, die das JSON haben kann.
Aber ja, eine generische COM-DLL sollte sich auch erstellen lassen. Nur verschenkt man da IMHO sehr viel von dem, was .NET kann, weil man sich den Parser in VO mühsam schreiben kann, während es unter .NET funktionierende JSON-Parser gibt.
Dasselbe gilt für das Serialisieren von JSON-Objekten - in .NET erledigen Dir das vorhandene Klassen, in VO musst Du das selber schreiben.
Aber wie der Gerhard geschrieben hat: sollte auch mit det Methode GetDocumentByGetOrPost() funktionieren, die habe ich auch irgendwo im Einsatz. Ich habe allerdings keine Ahnung, ob die zugrundeliegenden WinINet-Klassen z.B. TLS 1.2 unterstützen.
Wolfgang

VO und restAPI

Posted: Sat Sep 10, 2022 7:30 am
by lagraf
Hallo Leute,
mit Unterstützung von Norbert habe ich die 4 benötigten Aufrufe (GET, DELETE, POST und PUT) inzwischen zum Laufen bekommen.

PS: Gibt es irgendwo schon eine Funktion für VO die einen JSON String zerlegt und auswertet?
LG Franz

VO und restAPI

Posted: Mon Sep 12, 2022 9:04 am
by g.bunzel@domonet.de
Hallo Franz,

im Anhang etwas, was ich zu JSON gefunden habe.
Wurde von mir aber nie benutzt.

HTH

Gerhard

VO und restAPI

Posted: Mon Sep 12, 2022 9:33 am
by ArneOrtlinghaus
Ich habe diese Jsonparser-Klassen für unsere Zwecke umgebaut/erweitert und für das Parson von JSON-Files benutzt, siehe Anhang. Ich weiß nicht, was alles noch an Funktionen fehlt. Falls jemand Interesse hat, bitte melden mit Angabe der benötigten Funktionen.

Wenn man nur von einer Quelle JSON-Dateien bekommt und nur einache Antworten auswerten will, dann ist auch die "dreckige" Variante möglich: mit String-Operationen die Stellen suchen und extrahieren. Das JSON-Format ist ja so schön klargehalten. Wo man aufpassen muss, ist das Dateiformat. Oft sind die JSON-Dateien im UTF8-Format, so dass man eine Konvertierung machen muss, falls nichtenglischen Zeichen auftauchen.


Arne

VO und restAPI

Posted: Mon Sep 12, 2022 4:16 pm
by lagraf
Hallo Gerhard, hallo Arne!
Ich habe derzeit auch die "dreckige" Variante eingebaut: Ich trenne die einzelnen Datensätze in ein Array auf und suche dann in den einzelnen Arrayelementen nach den benötigten Strings und der Werte. Das reicht fürs erste mal, ich schau mir die jsonparser.zip aber danach an, kann man ja öfter verwenden.
Danke, Franz