PDA

View Full Version : REST Webservices / Verwendung von SYSTOOLS



Seiten : 1 2 [3]

sflo
06-04-16, 17:00
Hallo zusammen,

ich habe so ein ähnliches Problem, ich möchte gerne die Funktionen SYSTOOLS.HTTPPOSTCLOBVERBOSE um mit einem URL per HTTPS zu kommunizieren. Hat jemand Erfahrung damit von der AS400 aus? Zusätzlich muss ich einen Proxy-Server für die Kommunikation einsetzen. Für alle Hinweise bin ich sehr dankbar, vielen Dank!

Grüße,
Claudia

andreaspr@aon.at
07-04-16, 09:53
Hallo Claudia,

Was genau brauchst du denn?
Die SQL Funktion hast du ja schon gefunden.

sflo
07-04-16, 14:33
Hallo Andreas,

ich kann die Funktion nur mit Proxy verwenden. Weiß jemand, wie und wo ich die Proxy-Einstellungen dafür machen kann? Die Funktion SYSTOOLS.HTTPPOSTCLOBVERBOSE hat auch ein HTTPHEADER als Parameter. Müssen diese dahin eingetragen werden oder in den JAVA-Systemeigenschaften? Hat jemand schon mal so ein HTTPPOST mit den SYSTOOLS durchgeführt?

Vielen Dank!
Viele Grüße,
Claudia

RobertMack
07-04-16, 15:19
Wir haben allerdings noch nichts implementiert, um Daten über so einen Webservice in die iSeries hereinzubekommen.

Ich konnte nicht erkennen in welchem Umfang Ihr Daten in die i holen wollt, möglicherweise ist Scott Klement's HTTP API schon die Lösung: http://www.scottklement.com/httpapi/

Im RPGLE sieht das dann so aus:


H DEBUG DFTACTGRP(*NO) BNDDIR('HTTPAPI')
/copy httpapi_h
D toString PR 10I 0
D Fd 10I 0 value
D Data 65535A options(*varsize)
D Len 10I 0 value
D Rc S 10I 0
D Url S 256A varying
D Result S 65535A varying
**
C *ENTRY PLIST
C PARM $String 50
C PARM $Err 1
**
C EVAL URL = 'https://my.intranet.local'
C + '/myservice.php?string='
C + %Trim($String)
**
C EVAL Result = ''
C EVAL Rc = http_url_get_raw( Url
C : 0
C : %paddr(toString))
**
C IF Rc <> 1
C Callp http_crash
C ENDIF
**
C IF %len(result) > 0
C Callp HTTP_xlatep( %len(result)
C : %addr(result) + 2
C : TO_EBCDIC )
C ENDIF
**
C IF %subst(result:1:1) = '0'
C EVAL $Err = *On
C ENDIF
C EVAL *InLr = *On
**
P toString B
D toString PI 10I 0
D Fd 10I 0 value
D Data 65535A options(*varsize)
D Len 10I 0 value
/free
result += %subst(Data:1:Len);
return Len;
/end-free
P E


(sorry, krieg' die Darstellung als Code nicht hin ;- )

Rainer Ross
09-04-16, 18:49
Hallo Forum,

ich habe mit beiden Methoden gearbeitet und habe ein Beispiel mit HTTPPOSTCLOB. Hier wird ein REST-Webservice des Mailproviders www.sendgrid.com angesprochen, um Mails zu versenden.
HTTPPOSTCLOB hat drei Parameter
1. URL
2. Headerdaten, die im XML-Format definiert werden
3. Daten für den Post-Request



Select SYSTOOLS.HTTPPOSTCLOB
('https://api.sendgrid.com/api/mail.send.xml',
'<httpHeader><header name="Content-Type" value="application/x-www-form-urlencoded"/></httpHeader>',
'api_user=RainerRoss&api_key=mykey&from=rainer.ross@myhofi.com&to=rainer_ross@web.de&subject=Mail over Sendgrid&text=Mein Mailtext'
)
)

Wenn der Request über einen Proxy gesendet werden soll, muß eine Proxy-Datei mit folgendem Inhalt erstellt werden



http.proxyHost=myProxyHost.com
http.proxyPort=3128
http.proxyUser=user
http.proxyPassword=secret


Diese wird dann über folgenden Befehl zugeordnet



ADDENVVAR ENVVAR(QIBM_JAVA_PROPERTIES_FILE) VALUE('/home/proxy.properties') ;


Der HTTPGETCLOBVERBOSE sieht wie folgt aus:



SELECT * FROM TABLE(SYSTOOLS.HTTPGETCLOBVERBOSE
('http://google.de','<httpHeader connectTimeout="5000" readTimeout="5000">
<header name="User-Agent" value="test"/></httpHeader>'))
as Data;


Herzliche Grüße

Rainer
www.myhofi.com - Hotels finden - leicht gemacht - powered by IBM i

derMuller
14-02-18, 11:11
Hallo Zusammen,

die Sache ist zwar schon etwas älter aber bei mir klappt die Verbindung mit Proxy leider nicht.
In der Properties Datei habe ich auch nur Host und Port angegeben. User und Passwort sind nicht vorhanden. Müssen diese Parameter vielleicht trotzdem in der Datei gepflegt sein (z.B. mit '').
Gibt es noch andere Wege wie man prüfen kann woran es liegt?

Gruß
derMuller