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
Bookmarks