[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2020
    Beiträge
    315

    IWS Server mit SQL und Multirow JSON/XML als Input

    Hallo liebe Gemeinde,

    Im IWS kann man ja SQL WebServices erstellen.
    Wie kann ich jetzt aber ein JSON oder XML mit einer Array-Struktur übernehmen?

    Oder muss ich das auf dem klassischem Weg mit RPG und Array-DS als Parameter machen?

    Danke euch!
    lg Andreas

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Steht alles hier:
    https://www.ibm.com/docs/en/i/7.3?to...ing-json-table
    Siehe:
    "Handling a JSON array"
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Nov 2020
    Beiträge
    315
    Danke dir! Das JSON Array an sich ist nicht das Problem. Die Frage ist: wie greife ich im IWS auf den HTTP Body zu (wo dann der JSON oder XML enthalten ist)?
    Aktuell hab ich nur die Möglichkeit gefunden, wie ich einzelne Werte eines JSON z.B. als Parameter für eine SQL Prozedur zuweisen kann.
    Das geht aber eben nur mit einer flachen JSON Struktur und nicht mit einer Struktur als Array.

    Danke!

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das JSON ist in einer XML-Struktur enthalten, da HTML zu XML kompatibel ist.
    Somit kannst du per XML den Knoten aus der HTML auslesen und als Input an das JSON_TABLE weitergeben.
    Schau dir das Dokument mal mit Notepad++ an. Da gibts auch eine XML-Erweiterung zum beautyfien.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Nov 2020
    Beiträge
    315
    Was hat HTML damit zu tun?
    Was meinst du damit, dass ich mir das Dokument im Notepad++ anschauen soll?

    Im Postman hab ich den POST Request zusammen gebaut.
    Click image for larger version. 

Name:	2023-01-18_07-34.jpg 
Views:	7 
Size:	17,5 KB 
ID:	650

    Im IWS möchte ich einfach eine SQL Proc erstellen, die ein CLOB mit den Body erhält:


    Click image for larger version. 

Name:	2023-01-18_07-31.jpg 
Views:	7 
Size:	32,2 KB 
ID:	648

    und dann noch:

    Click image for larger version. 

Name:	2023-01-18_07-32.jpg 
Views:	7 
Size:	37,7 KB 
ID:	649

    Und genau da hänge ich und finde nichts wie das gehen soll.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Was steht denn nun genau in deinem CLOB-Response?
    I.d.R. kann man den Web-Request ebenso in einem Browserfenster aufrufen.
    Das Ergebnis kann man dann per rechter Maustaste mit Quelltext-Anzeige ansehen.
    Ist das Ergebnis nun so wie in deinem Bild mit "{......}", dann ist dies bereits deine JSON-Antwort, die du 1:1 an JSON_TABLE als erstes Argument weitergeben kannst.
    Ist CLOB im HTML-Format und das JSON ist im Body eingebettet, so muss man per XMLTABLE den Body rauslesen.
    https://www.itjungle.com/2012/06/13/fhg061312-story02/

    Zeige doch mal den Inhalt deines CLOB-Response.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Nov 2020
    Beiträge
    315
    Wir sprechen an einander vorbei.
    Mir geht es jetzt nicht darum wie XML oder JSON im allgemeinen gelesen wird sondern wie ich überhaupt dazu komme.
    Das JSON was ich oben hab ist der Request den ich an das IWS WebService schicke.
    Der Response ist mir hier egal. Es geht darum, wie ich im IWS mit der SQL Variante, auf den JSON Request überhaupt zugreifen kann.

    Hab's jetzt geschafft.
    Man muss die Option "Wrap input parameters" ausschalten und bei der Parameterzuordnung *NONE auswählen.
    Dadurch wird der JSON Body direkt 1:1 an die SQL Prozedur als Parameter übergeben.
    Und dort kann ich jetzt via JSON_TABLE & Co die Daten verarbeiten.

    Click image for larger version. 

Name:	2023-01-18_09-33.jpg 
Views:	5 
Size:	47,2 KB 
ID:	651

    Danke trotzdem für deinen Input!

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ich mache das auch nicht mit SQL sondern native mit C#, da ist eben vieles einfacher.
    Mittels dieses Programmes kann ich Web-Requests (REST) direkt verarbeiten und das Ergebnis in eine IBM i-DB schreiben oder ändern.
    Da ja heute sowieso überall Windowsserver im Einsatz sind, ist das die perfekte Lösung um beliebige Daten in mein Lieblingssystem zu bringen.
    Noch besser als mein Upload/400, dass ja nur Excel kann;-).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Nov 2020
    Beiträge
    315
    Absolut!
    Ich selbst verwende Python direkt auf der IBM i. Habe sogar ein kleines Beispiel auf Github veröffentlicht: https://github.com/andreas-prouza/python-webapi/

    Sehr einfach und mit einem entsprechenden CL kannst du es auch via STRWEBPY (oder wie auch immer) starten, beenden oder Status abfragen durchführen.

    Alles auch schön mit Git Versioniert, dann super mit Deployment-Prozessen verteilt werden usw.

    IWS ist da eher als ob man mit einem Hammer versucht ein Bild zu machen. Einfachste Aufgaben scheinen schon sehr komplex in der Umsetzung.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das kommt immer drauf an, wie man mit einem Werkzeug umgeht.
    Beispiel die Kettensäge:
    a) https://www.esquire.de/entertainment...ssacre-netflix
    b) https://www.arte.tv/de/videos/099959...t-kettensaege/
    Für den Hammer habe ich da nichts gefunden. Die Verwendung da scheint eher eingeschränkt zu sein.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Nov 2020
    Beiträge
    315

Similar Threads

  1. IWS nested JSON bei POST Aufruf mit SQL verarbeiten
    By ismiavoiwuascht in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 17-10-21, 22:17
  2. BLOB mit BASE64 encoden für REST Service im IBM i IWS
    By ismiavoiwuascht in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 27-04-20, 15:18
  3. BLOB mit BASE64 encoden für REST Service im IBM i IWS
    By ismiavoiwuascht in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 25-04-20, 11:18
  4. SQL Procedure call SQLRPGLE mit Array input
    By dholtmann in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 30-05-18, 10:28
  5. HTTPS Aufruf mit JSON Input
    By derMuller in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-12-17, 12:05

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •