Welcome, Guest
Username: Password: Remember me
Hier wird Deutsch gesprochen
  • Page:
  • 1

TOPIC:

VO und restAPI 08 Sep 2022 09:02 #23690

  • lagraf
  • lagraf's Avatar
  • Topic Author


  • Posts: 338
  • Hallo zusammen,
    ich soll aus einer VO App mit einem restAPI im Internet kommunizieren, hier die Beschreibung: 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?

    Please Log in or Create an account to join the conversation.

    Last edit: by lagraf.

    VO und restAPI 08 Sep 2022 09:33 #23691

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3366
  • 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

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    VO und restAPI 08 Sep 2022 11:37 #23694

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 338
  • 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.

    Please Log in or Create an account to join the conversation.

    VO und restAPI 08 Sep 2022 13:22 #23695

    • mk_schmid
    • mk_schmid's Avatar


  • Posts: 6
  • 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.
    docs.microsoft.com/de-de/dotnet/api/syst...request?view=net-6.0
    docs.microsoft.com/de-de/dotnet/api/syst...rotocol?view=net-6.0

    Zum Erzeugen von Json Objekten hat sich das JsonConvert.SerializeObject bewährt.
    www.newtonsoft.com/json/help/html/Overlo..._SerializeObject.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.

    chrome.google.com/webstore/detail/advanc...nphfgcellkdfbfbjeloo

    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

    Please Log in or Create an account to join the conversation.

    VO und restAPI 08 Sep 2022 16:44 #23699

    • g.bunzel@domonet.de's Avatar


  • Posts: 90
  • 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:
    www.voug-bodensee.net/DownLoad/DownLoadPublic.html

    HTH

    Gerhard Bunzel

    Please Log in or Create an account to join the conversation.

    Last edit: by .

    VO und restAPI 08 Sep 2022 19:03 #23702

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3366
  • 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

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    VO und restAPI 10 Sep 2022 09:30 #23742

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 338
  • 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

    Please Log in or Create an account to join the conversation.

    Last edit: by lagraf.

    VO und restAPI 12 Sep 2022 11:04 #23771

    • g.bunzel@domonet.de's Avatar


  • Posts: 90
  • Hallo Franz,

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

    HTH

    Gerhard
    Attachments:

    Please Log in or Create an account to join the conversation.

    Last edit: by .

    VO und restAPI 12 Sep 2022 11:33 #23772

    • ArneOrtlinghaus
    • ArneOrtlinghaus's Avatar


  • Posts: 348
  • 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:

    Please Log in or Create an account to join the conversation.

    VO und restAPI 12 Sep 2022 18:16 #23774

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 338
  • 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

    Please Log in or Create an account to join the conversation.

    VO und restAPI 13 Sep 2022 05:43 #23775

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 338
  • Die App ist inzwischen weitestgehend fertig, nun gehts ein wenig ans Verschönern.
    Zur App gehört auch ein Hintergrundprozess, der mit einem Icon auf der Taskleiste vertreten ist. Dieser Prozess lädt mittels Timer in einem Intervall geänderte Daten über ein restAPI zu einer Anwendung im Internet. Bei diversen am Markt befindlichen Hintergundprogrammen (z.B. Virenscanner) sieht man öfter, wie rechts unten von der Taskleiste ein kleines Nachrichtenfenster aufgeht und nach kurzer Zeit wieder verschwindet. Diese Fenster haben keine VO-typischen Kopf- und Fusszeilen. Kann man solche Fenster, die hochkommen und wieder abtauchen, auch mit VO verwirklichen?

    Please Log in or Create an account to join the conversation.

    VO und restAPI 13 Sep 2022 10:04 #23776

    • g.bunzel@domonet.de's Avatar


  • Posts: 90
  • Hallo Arne,

    ich wäre an dem JSON-Parser interessiert.
    Es fehlen ein paar Funktionen:
    TypeValue2String()
    RemoveZeroDecimals()
    fFileRead()
    fFileWrite()
    trimcrlf()
    shortenstring()
    und die Klasse:
    clslargestring{}

    Wäre super, wenn Du das noch senden könntest.
    Vielen Dank im Voraus.
    Gruss
    Gerhard

    Please Log in or Create an account to join the conversation.

    VO und restAPI 21 Sep 2022 18:31 #23956

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 338
  • Hallo zusammen,
    eine Frage im Zusammenhang mit HoverButtons und das Färben von Backgrounds:
    Wenn ich einen Brush global definiere und befülle
    global goBrush as Brush
    goBrush := Brush{color{COLORRED}}
    und mit dem dann einen HoverButton einfärbe
    method pshButton() class ...
    oCCpshButton:Background := goBrush
    dann klappt das 1x, ab dem zweiten Click auf den Button gehts nicht mehr!
    Definiere ich den Brush jedoch local oder weise ihn direkt zu, dann klappts immer!
    method pshButton() class ...
    oCCpshButton:Background := Brush{Color{COLORRED}}
    Warum ist das so?

    Please Log in or Create an account to join the conversation.

    VO und restAPI 21 Sep 2022 18:46 #23959

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3366
  • Hallo Franz,
    ich kenne die Hoverbutton-Klasse nicht, aber es könnte sein, dass sie das Brush-Objekt bei einer erneuten Zuweisung zerstört.
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    VO und restAPI 13 Oct 2022 15:19 #24153

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 338
  • Hochzuladende Werte ans restAPI muß ich als UTF-8 übergeben, was durch CodePageAnsi2Utf8() kein Problem ist. Die Rückgabewerte werden allerdings in Latin-1 (ISO-8859-1) zurückgegeben. Gibt es auch eine Funktion zum Konvertieren von Latin-1 nach Ansi, sonst müßte ich zumindest die Umlaute man. umsetzen:
            cString := StrTran(cString, "\u00c4", "Ä")
    	cString := StrTran(cString, "\u00d6", "Ö")
    	cString := StrTran(cString, "\u00dc", "Ü")
    	cString := StrTran(cString, "\u00e4", "ä")
    	cString := StrTran(cString, "\u00f6", "ö")
    	cString := StrTran(cString, "\u00fc", "ü")
    	cString := StrTran(cString, "\u00df", "ß")

    Please Log in or Create an account to join the conversation.

    Last edit: by lagraf.

    VO und restAPI 21 Nov 2022 10:02 #24493

    • jonhn
    • jonhn's Avatar


  • Posts: 84
  • Hello Arne,
    I am trying to set up a JSON import and Export routine and would like to use these classes - they look pretty nice.
    Do you know if there is a DLL or something else that also needs to be referenced to use this in an X# app?
    Thanks, Jonathan

    Please Log in or Create an account to join the conversation.

    • Page:
    • 1
    Moderators: wriedmann