Malte
14-09-16, 11:43
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
<remotequeries><remotequeries> 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 = '<remotequeries>'
+ %trim(lpTag('Query':'GetLagH':'Single'))
+ '<remotequeries>';
return;
end-proc;
dcl-proc GetQueryInfo export;
dcl-pi *n
queryName varchar(500000);
result varchar(500000);
END-PI;
result = '<remotequeryinfo>';
Select;
when queryName = 'GetLagH';
result = %trim(result)
+ %trim(lpTag('Parameter':'ItemNumber':'String'));
ENDSL;
result = %trim(result) + '</remotequeryinfo>';
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
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
CRTSRVPGM SRVPGM(*LIBL/SRVPERFION) MODULE(*LIBL/PERFIONWS) SRCFILE(*LIBL/QSRVSRC) SRCMBR(PERFIONSRV)
Dann Webservice als REST erstellt bei den Funktionen wie folgt definiert:
<tbody>
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
</tbody>
<tbody>
<tbody>
Eingabeparameterzuordnungen:
<tbody>
<tbody>
Parametername
Datentyp
Input source
Kennung
Default Value
query
struct
*NONE
</tbody>
</tbody>
<tbody>
</tbody>
</tbody>
</tbody>
<tbody>
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
</tbody>
<tbody>
<tbody>
Eingabeparameterzuordnungen:
<tbody>
<tbody>
Parametername
Datentyp
Input source
Kennung
Default Value
queryName
struct
*NONE
</tbody>
</tbody>
<tbody>
</tbody>
</tbody>
</tbody>
<tbody>
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
</tbody>
Aber wenn ich den WS versuche aufzurufen über die IP
http://myIP:myPort/web/services/PerfionAS400Api/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</remotequeries></remotequeries></remotequeries></remotequeries>
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
<remotequeries><remotequeries> 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 = '<remotequeries>'
+ %trim(lpTag('Query':'GetLagH':'Single'))
+ '<remotequeries>';
return;
end-proc;
dcl-proc GetQueryInfo export;
dcl-pi *n
queryName varchar(500000);
result varchar(500000);
END-PI;
result = '<remotequeryinfo>';
Select;
when queryName = 'GetLagH';
result = %trim(result)
+ %trim(lpTag('Parameter':'ItemNumber':'String'));
ENDSL;
result = %trim(result) + '</remotequeryinfo>';
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
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
CRTSRVPGM SRVPGM(*LIBL/SRVPERFION) MODULE(*LIBL/PERFIONWS) SRCFILE(*LIBL/QSRVSRC) SRCMBR(PERFIONSRV)
Dann Webservice als REST erstellt bei den Funktionen wie folgt definiert:
<tbody>
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
</tbody>
<tbody>
<tbody>
Eingabeparameterzuordnungen:
<tbody>
<tbody>
Parametername
Datentyp
Input source
Kennung
Default Value
query
struct
*NONE
</tbody>
</tbody>
<tbody>
</tbody>
</tbody>
</tbody>
<tbody>
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
</tbody>
<tbody>
<tbody>
Eingabeparameterzuordnungen:
<tbody>
<tbody>
Parametername
Datentyp
Input source
Kennung
Default Value
queryName
struct
*NONE
</tbody>
</tbody>
<tbody>
</tbody>
</tbody>
</tbody>
<tbody>
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
</tbody>
Aber wenn ich den WS versuche aufzurufen über die IP
http://myIP:myPort/web/services/PerfionAS400Api/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</remotequeries></remotequeries></remotequeries></remotequeries>