[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Jun 2013
    Beiträge
    69

    Post REST Webservice aus SRVPGM Error 404

    Hallo alle zusammen,

    Ich versuche mich grade an 2 für mich neunen Sachen in einem.

    Ich muss für ein Externes Programm einen Webservice erstellen der 3 vor definierte Funktionen hat und über HTTP angesprochen werden kann.

    Also ein REST Webservice mit SRVPGM dahinter.

    Nun Habe ich ein Folgendes Modul erstellt
    Code:
           ctl-opt nomain;       
           ctl-opt pgminfo(*pcml:*module:*dclcase);
           ctl-opt datfmt(*iso);
           ctl-opt alwnull(*usrctl);
          
           dcl-c hk const('''');
    
    
           dcl-proc GetQueries export;
              dcl-pi *n;
                 result varchar(500000);
              END-PI;
              result = ''
                     + %trim(lpTag('Query':'GetLagH':'Single'))
                     + '';
    
    
              return;
           end-proc;
    
            
           dcl-proc GetQueryInfo export;
              dcl-pi *n
                 queryName varchar(500000);
                 result varchar(500000);
              END-PI;
    
    
              result = '';
    
    
              Select;
                when queryName = 'GetLagH';
                   result = %trim(result)
                          + %trim(lpTag('Parameter':'ItemNumber':'String'));
              ENDSL;
    
    
    
              result = %trim(result) + '';
    
    
              return;
           end-proc;
    
    
           dcl-proc GetData export;
              dcl-pi *n;
                 query varchar(500000);
                 result varchar(500000);
              END-PI;
    
    
              result = 'Hallo Welt';
    
    
              return;
           end-proc;
    Diese kann ich auch wunderbar kompilieren und mit hilfe dieses Zusatzes in ein SRVPGM umwandeln
    Code:
         STRPGMEXP  PGMLVL(*CURRENT) SIGNATURE('B_PERFIWS')               
                      EXPORT     SYMBOL('GETQUERIES')
                      EXPORT     SYMBOL('GETQUERYINFO')
                      EXPORT     SYMBOL('GETDATA')
         ENDPGMEXP
    Hier der Befehl mit dem ich dan das Servic Programm erstellt habe
    Code:
    CRTSRVPGM SRVPGM(*LIBL/SRVPERFION) MODULE(*LIBL/PERFIONWS) SRCFILE(*LIBL/QSRVSRC) SRCMBR(PERFIONSRV)

    Dann Webservice als REST erstellt bei den Funktionen wie folgt definiert:
    Prozedurnamen: GETDATA
    HTTP-Anforderungsmethode: POST
    URI-Pfadvorlage für die Methode: *NONE
    HTTP response code output parameter: *NONE
    HTTP header array output parameter: *NONE
    Zulässige Eingabemedientypen: *XML_AND_JSON
    Zurückgegebene Ausgabemedientypen: *XML_AND_JSON
    Eingabeparameterzuordnungen:
    Parametername Datentyp Input source Kennung Default Value
    query struct *NONE
    Prozedurnamen: GETQUERYINFO
    HTTP-Anforderungsmethode: POST
    URI-Pfadvorlage für die Methode: *NONE
    HTTP response code output parameter: *NONE
    HTTP header array output parameter: *NONE
    Zulässige Eingabemedientypen: *XML_AND_JSON
    Zurückgegebene Ausgabemedientypen: *XML_AND_JSON
    Eingabeparameterzuordnungen:
    Parametername Datentyp Input source Kennung Default Value
    queryName struct *NONE
    Prozedurnamen: GETQUERIES
    HTTP-Anforderungsmethode: GET
    URI-Pfadvorlage für die Methode: *NONE
    HTTP response code output parameter: *NONE
    HTTP header array output parameter: *NONE
    Zulässige Eingabemedientypen: *XML_AND_JSON
    Zurückgegebene Ausgabemedientypen: *XML_AND_JSON

    Aber wenn ich den WS versuche aufzurufen über die IP
    http://myIP:myPort/web/services/Perf...Api/GetQueries

    Bekomme ich immer ein HTTP Error 404 (über SOAP ui rausgefunden)

    Und ich hab mittlerweile keine Idee mehr warum ich hier kein Result bekomme

    Vielen Dank schon mal ich hoffe mir kann jemand helfe und es ist nur eine dumme Kleinigkeit

    MfG Malte

  2. #2
    Registriert seit
    Jun 2013
    Beiträge
    69
    Hallo *all,

    ich hab es mittlerweile so weit hin bekommen das ich ich die Methoden ansprechen kann.

    bei mir war das Problem das ich bei URI-Pfadvorlage den Pfad nicht erweitert habe
    Also jetzt sieht das so aus :

    Prozedurnamen: GETDATA
    HTTP-Anforderungsmethode: GET
    URI-Pfadvorlage für die Methode: GetData/{request}
    HTTP response code output parameter: *NONE
    HTTP header array output parameter: *NONE
    Zulässige Eingabemedientypen: *ALL
    Zurückgegebene Ausgabemedientypen: *JSON
    Eingabeparameterzuordnungen:
    Parametername Datentyp Input source Kennung Default Value
    query char *PATH_PARAM request *NONE
    Prozedurnamen: GETQUERYINFO
    HTTP-Anforderungsmethode: GET
    URI-Pfadvorlage für die Methode: GetQueryInfo/{queryName}
    HTTP response code output parameter: *NONE
    HTTP header array output parameter: *NONE
    Zulässige Eingabemedientypen: *ALL
    Zurückgegebene Ausgabemedientypen: *JSON
    Eingabeparameterzuordnungen:
    Parametername Datentyp Input source Kennung Default Value
    queryName char *PATH_PARAM queryName *NONE
    Prozedurnamen: GETQUERIES
    HTTP-Anforderungsmethode: GET
    URI-Pfadvorlage für die Methode: GetQueries/
    HTTP response code output parameter: *NONE
    HTTP header array output parameter: *NONE
    Zulässige Eingabemedientypen: *ALL
    Zurückgegebene Ausgabemedientypen: *JSON


    Das einzige Problem ist jetzt noch ich weiß nicht wie ich es hinbekommen kann das ich an den Webservice XML übergebe das läuft bei mir immer auf einen 404 weil er die "/" im XML als Trennzeichen für den URL interpretiert.

    Hat da einer eine Idee ?

    MfG Malte

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Ich persönlich finde ja das RPG nie dafür gemacht wurde mit dem Web zu interagieren.
    Und all diese Erweiterungen damit es irgendwie mit dem Web kommunizieren kann, finde ich nicht unbedingt zeitgemäß.
    Aber wie gesagt, nur meine persönliche Meinung!

    Ich bevorzuge da PHP auf der i. Da kannst du mit wenigen Zeilen Code ein fertiges WebService erstellen.
    Um die korrekte Verarbeitung von XML (ein/ausgehend) brauche ich mir da auch keine Gedanken machen.
    Und mit JSON geht es sogar noch einfacher.

    Kann auch schnell und einfach getestet werden.

  4. #4
    Registriert seit
    Jan 2009
    Beiträge
    67
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Ich persönlich finde ja das RPG nie dafür gemacht wurde mit dem Web zu interagieren.
    Und all diese Erweiterungen damit es irgendwie mit dem Web kommunizieren kann, finde ich nicht unbedingt zeitgemäß.
    Aber wie gesagt, nur meine persönliche Meinung!

    Ich bevorzuge da PHP auf der i. Da kannst du mit wenigen Zeilen Code ein fertiges WebService erstellen.
    Um die korrekte Verarbeitung von XML (ein/ausgehend) brauche ich mir da auch keine Gedanken machen.
    Und mit JSON geht es sogar noch einfacher.

    Kann auch schnell und einfach getestet werden.
    Was kann denn PHP was RPG nicht kann (rhetorisch)? Das Problem besteht überhaupt nicht in der Programmiersprache. Besonders nicht, da man von RPG auch auf andere ILE fähigen Sprachen zugreifen kann. Das Problem ist, dass für RPG fast ausschliesslich IBM Frameworks und Spracherweiterung anbietet. Und wenn IBM in dem Feld nix macht, dann passiert auch nix. In anderen Sprachen ist die Community wesentlich aktiver (was Softwareprojekte angeht) und nicht so fixiert auf den Hersteller der Programmiersprache. Wenn in anderen Sprachen Elemente oder Frameworks fehlen, dann werden sie von der Community beigesteuert. Das fehlt im RPG Umfeld fast total.

    Wenn RPG ein gutes Framework hätte für Web Services, dann wäre auch RPG ein guter Mitspieler im WWW. Leider fehlt ein entsprechendes Angebot an Software.

    Ich versuche dem ein wenig abzuhelfen und habe ein Projekt gestartet: BlueDroplet. Siehe https://bitbucket.org/m1hael/bluedroplet . Das Projekt steckt noch in den Kinderschuhen, aber wir machen schon ganz gute Fortschritte.

    Meine 2 Cent.

    Mihael

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.343
    Da nun mal RPGLE trotz allem nicht objektorientiert ist, stellt sich eine Spracherweiterung eben als nicht so einfach dar.
    OOP-Sprachen sind da äußerst flexibel und mittels Funktionsbibliotheken unendlich erweiterbar.
    Hier ist das halt im RPGLE-Umfeld doch mit nicht unerheblichen Schwierigkeiten verbunden.
    Da kann ich die OOP-Fraktionen durchaus verstehen.

    Nichts desto trotz lassen sich natürlich mit RPGLE super Anwendungen für die AS/400 schreiben.
    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

  6. #6
    Registriert seit
    Jan 2009
    Beiträge
    67
    Manche Dinge lassen sich in OO Sprachen sicherlich einfacher umsetzen. Dennoch ist sehr vieles in RPG möglich. Vieles was in C möglich ist ist auch in RPG möglich. Es liegt an der Community. Es liegt an den fehlenden Softwareprojekten der Community, dass alle glauben, dass man Dinge nicht mit RPG umsetzen kann.

    Ich denke es lässt sich ein REST Framework auch in einer (oder mehreren) ILE fähigen Sprache(n) umsetzen, so dass es dann von RPG nutzbar ist.

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.303
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Da nun mal RPGLE trotz allem nicht objektorientiert ist, stellt sich eine Spracherweiterung eben als nicht so einfach dar.
    OOP-Sprachen sind da äußerst flexibel und mittels Funktionsbibliotheken unendlich erweiterbar.
    Hier ist das halt im RPGLE-Umfeld doch mit nicht unerheblichen Schwierigkeiten verbunden.
    Da kann ich die OOP-Fraktionen durchaus verstehen.

    Nichts desto trotz lassen sich natürlich mit RPGLE super Anwendungen für die AS/400 schreiben.

    ... was hat PHP mit Objekt Orientierung zu tun? Ich denke gerade darüber nach, ob PHP eine Programmiersprache ist - na gut, für Arme und Kranke, wenn man sonst nix hat oder kann...

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.887
    Lieber Dieter,

    da für Dich alles nicht gut genug ist ... was ist denn Deiner Meinung nach die beste Lösung? Java?!
    Das hat aber auch seine Ecken und Kanten und an manchen Stellen sind eben Dinge sogar mit den Pfusch und Huddelduddel-Sprachen einfacher und eleganter zu realisieren.

    Die Tendenz geht einfach dahin, dass das richtige Tool für den richtigen Zweck verwendet wird.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.303
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Lieber Dieter,

    da für Dich alles nicht gut genug ist ... was ist denn Deiner Meinung nach die beste Lösung? Java?!
    Das hat aber auch seine Ecken und Kanten und an manchen Stellen sind eben Dinge sogar mit den Pfusch und Huddelduddel-Sprachen einfacher und eleganter zu realisieren.

    Die Tendenz geht einfach dahin, dass das richtige Tool für den richtigen Zweck verwendet wird.

    Birgitta
    ... was soll denn diese persönliche Anmache? PHP ist eine Skriptsprache zur Erstellung dynamischer Webseiten - nicht mehr und nicht weniger. Wer meint damit klassische Business Anwendungen, wie sie in RPG existieren, neu zu erstellen, nutzt einfach das falsche Werkzeug! Objekt orientiert nennt sich heute fast alles, das ist so schön modern, trifft aber auf vieles nicht wirklich zu.
    Das mit dem richtigen Tool ist entweder schönfärberisch oder geht an der Realität vorbei. Im richtigen Leben benutzt man - oft leider - in der Tat das was man hat oder kann und viel zu oft eben gerade nicht ein - es gibt immer mehrere Möglichkeiten - angemessenes Werkzeug.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Jan 2009
    Beiträge
    67
    Zitat Zitat von BenderD Beitrag anzeigen
    Das mit dem richtigen Tool ist entweder schönfärberisch oder geht an der Realität vorbei. Im richtigen Leben benutzt man - oft leider - in der Tat das was man hat oder kann und viel zu oft eben gerade nicht ein - es gibt immer mehrere Möglichkeiten - angemessenes Werkzeug.
    Da muss ich Dieter Recht geben. Viele nutzen einfach nur die Tools, die sie kennen. Ob es dann das richtige oder auch angemessene Tool ist spielt keine Rolle. Viele sind nicht bereit (oder in der Lage) sich auf Neues (oder etwas was sie noch nicht kennen, egal wie alt es ist) einzulassen. Und ich schliesse mich da selber gar nicht von aus (manchmal siegt ebend auch die Faulheit =) ).

    Mihael

  11. #11
    Registriert seit
    Jan 2007
    Beiträge
    923
    Ich schliess mich mal hier gerade auch an. Die heutigen Anfroderungen verlangen halt, dass ein Mix aus verschiedensten Umgebungen nötig ist. Ich denke, das hat auch IBM erkannt und lässt allerlei auf der IBMi zu, siehe die neusten "Open"-Umgebungen.

    Und wenn ich schon dabei bin, ich krieg es einfach nicht gebacken, ein Eingabefeld unter Unicode für verschiedene Sprachen zu erstellen. Sprich, Bezeichnungen für Griechisch, Englisch, Deutsch und Tschechisch unter einer CCSID zu erfassen. (Ok, griechische Zeichen z.B. mit Copy/Paste aus Win).
    Das muss doch möglich sein, da bin ich doch nicht der Einzige. :-(
    kf

  12. #12
    Registriert seit
    Aug 2014
    Beiträge
    179
    Zu der interessanten Diskussion über Webservices habe ich ein paar Beispiele von mir zusammengetragen

    Webservice auf der IBM i, der Daten in Tschechisch, Russisch und Chinesisch in XML mit unterschiedlichen CCSID's liefert: www.myhofi.com/muscgip/mymustst.pgm

    Webservice auf der IBM i, der Daten in JSON liefert: www.myhofi.com/myapp/websrvknd1.pgm?id=1

    PHP ruft Webservice auf der IBM i auf: http://phpfiddle.org/main/code/z4ij-5n7d

    Webservice auf der IBM i mit Node.js programmiert: https://github.com/RainerRoss/webser...-i-and-Node.js

    Webservices von IBM i anzusprechen, z.B. den Webservice von Google Maps, geht sehr einfach über HTTPGETCLOB oder HTTPGETBLOB https://worksofbarry.github.io/blog/?4

    Mein Spezialgebiet ist das Bereitstellen von zeitkrititschen und hochperformanten Webservices auf der IBM i, z.B. die Anbindung von Webshops, die Daten von der IBM i benötigen oder von Webanwendungen, die über AJAX auf Webservices zugreifen www.myhofi.com/devhtm/spoolsorter.htm

    Herzliche Grüße
    Rainer

Similar Threads

  1. REST Webservices / Verwendung von SYSTOOLS
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 14-02-18, 11:11
  2. Webservice REST, mehrere Datensätze zurückgeben
    By Peet in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-09-16, 10:26
  3. SRVPGM
    By philsturm in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 13-05-16, 07:45
  4. SRVPGM + RCLACTGRP
    By Robi in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-09-02, 12:02
  5. Wo ist *SRVPGM QTMHSQL?
    By holgerscherer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 05-08-01, 18:09

Berechtigungen

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