VO und restAPI

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

VO und restAPI

Post 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?
User avatar
wriedmann
Posts: 3757
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

VO und restAPI

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

VO und restAPI

Post 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.
mk_schmid
Posts: 14
Joined: Wed Jul 06, 2022 1:53 pm
Location: Germany

VO und restAPI

Post 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
Christian Schmid
g.bunzel@domonet.de
Posts: 97
Joined: Tue Mar 01, 2016 11:50 am
Location: Germany

VO und restAPI

Post 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
User avatar
wriedmann
Posts: 3757
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

VO und restAPI

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

VO und restAPI

Post 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
g.bunzel@domonet.de
Posts: 97
Joined: Tue Mar 01, 2016 11:50 am
Location: Germany

VO und restAPI

Post by g.bunzel@domonet.de »

Hallo Franz,

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

HTH

Gerhard
Attachments
JsonParser.zip
(14.86 KiB) Downloaded 147 times
User avatar
ArneOrtlinghaus
Posts: 412
Joined: Tue Nov 10, 2015 7:48 am
Location: Italy

VO und restAPI

Post 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
Attachments
jsonparser.zip
(14.45 KiB) Downloaded 143 times
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

VO und restAPI

Post 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
Post Reply