Discussione:
creazione Web service
(troppo vecchio per rispondere)
j***@gmail.com
19 anni fa
Permalink
Salve a tutti,
Sono un profano nella creazione di Web service, vorrei sapere se c'è
un redbook o una documentazione pratica, su come creare un web service
per AS/400 arrivando a chiamare programmi RPG/ILE
- software necessario
- configurazione
- esempi di programmi RPG/ILE.

Grazie mille.
Danilo Cussini
19 anni fa
Permalink
Post by j***@gmail.com
Sono un profano nella creazione di Web service, vorrei sapere se c'è
un redbook o una documentazione pratica, su come creare un web service
per AS/400 arrivando a chiamare programmi RPG/ILE
- software necessario
- configurazione
- esempi di programmi RPG/ILE.
Cerca CGIDEV2.
Massimiliano Toninelli
19 anni fa
Permalink
<***@gmail.com> ha scritto nel messaggio news:***@m73g2000cwd.googlegroups.com...
Salve a tutti,
Sono un profano nella creazione di Web service, vorrei sapere se c'è
un redbook o una documentazione pratica, su come creare un web service
per AS/400 arrivando a chiamare programmi RPG/ILE
- software necessario
- configurazione
- esempi di programmi RPG/ILE.

==
Non ci crederai, ma proprio adesso stiamo implementando Web Services.
Noi li chiamiamo WOA ( WOA Web oriented architecture ), anzichè SOA (
SOA Service-oriented architecture ).
C'era un bell'articolo proprio questo mese sulla rivista System i, dove
appunto dice il i SOA sono sempre esistiti, in quanto un Srvpgm in ambiente
ile puo' essere considerato un esecuteore di servizi.
Quindi il software necessario potrebbe essere il CGIDEV2, la configurazione
è un normalissimo servente HTTP e la differenza frà una pagina HTM gestita
dal server apache e un XML od altro, è deteminato dalla prima riga che è il
content-type che defisce al browser come trattare quella pagina.


Al momento noi stiamo usando come standard di comunicazione l'XML con il
CGIDEV, ed Ajax.
L'esigenza è di mettere in grado il commerciale di analizzare un'offerta del
concorrente in formato Excel, dove deve esseere presente il Cd Ean.

Abbiamo creato una pagina HTM con all'interno un field Textarea.
L'utente copia l'excel dentro questo form e con ajax leggere il singolo text
area e per ogni cd ean trovato, fa' una chiamata WOA al mio pgm Ile:
es:
http://www.intranet.toninelli.it/cgi-bin/hwoaart.cgi?request=hanar&inpfld=EFOEANK&inpval=8.006.023.440.016

Questo ritorna un file XML con il cd articolo trovato, la descrizione, ed
il prezzo, e viene esposto come una normalissima pagina HTML.
<AS400>GenHeadSOA
Content-type: text/xml

<?xml version="1.0" encoding="UTF-8"?>
<anarti>
<descrizione>
<field colhdg="Cod Art">baark</field>
<field colhdg="Descrizione">badec</field>
<field colhdg="Prz tarif">baprp</field>
</descrizione>

<AS400>HANAR
<dati>
<baark>/%BAARK%/</baark>
<badec>/%BADEC%/</badec>
<baprp>/%BAPRP%/</baprp>
</dati>

<AS400>LastSecSOA
<msgerrore>/%msgerrore%/.</msgerrore>
</anarti>
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Dr.UgoGagliardelli
19 anni fa
Permalink
...
Questo non e' cio' che il w3 intende per webservice, come minimo deve
definire una wsdl. Che poi funzioni anche questo e' un altro paio di
maniche.
--
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'
Massimiliano Toninelli
19 anni fa
Permalink
...
Visto che facciamo tutto "in casa", a noi funziona tutto ... e molto bene!
:-)
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Scorpio
19 anni fa
Permalink
Post by Massimiliano Toninelli
Post by Dr.UgoGagliardelli
Questo non e' cio' che il w3 intende per webservice, come minimo deve
definire una wsdl. Che poi funzioni anche questo e' un altro paio di
maniche.
Visto che facciamo tutto "in casa", a noi funziona tutto ... e molto bene!
:-)
.... comunque, senza voler essere polemico (anzi, congratulazioni per aver
tentato con successo la strada delle SOA con RPG!!), ha ragione Dr.Ugo
Gagliardelli con il suo "distinguo". Quella che avete realizzato è più una
chiamata a funzione remota via XML... che va benissimo, ci mancherebbe, da
un punto di vista pratico.

Saluti,
Scorpio.
"GdG" @@aa>
19 anni fa
Permalink
Post by Massimiliano Toninelli
Questo ritorna un file XML con il cd articolo trovato, la
descrizione, ed il prezzo, e viene esposto come una normalissima
pagina HTML. <AS400>GenHeadSOA
Content-type: text/xml
<?xml version="1.0" encoding="UTF-8"?>
<anarti>
<descrizione>
<field colhdg="Cod Art">baark</field>
<field colhdg="Descrizione">badec</field>
<field colhdg="Prz tarif">baprp</field>
</descrizione>
Questa non è manco lontanamente una envelop Soap.
E se non è una envelop soap non è manco un Web Services.
E' un pezzo di XML e basta.

Saluti.
Dr.UgoGagliardelli
19 anni fa
Permalink
...
Glielo avevo gia' detto, non girare il dito nella piaga!
:-)
--
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'
Massimiliano Toninelli
19 anni fa
Permalink
...
ahh ahhahha! Vi rispondo per le rime, anzi con i proverbi:

A casa sua ognuno è re!
Chi ben comincia è alla metà dell'opera!
Chi non fa', non falla!
Chi fa falla e chi non fa, sfarfalla.
Con le mani di un'altro è facile toccare il fuoco.
Conta più la pratica che la grammatica.
Sbagliando s'impara.

Criticoni!!! :-)
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Dr.UgoGagliardelli
19 anni fa
Permalink
...
Questa si' che si chiama coda di paglia!
:-)
Scherzi a parte, mi e' sembrato corretto, onesto e doveroso
puntualizzare che a uno che dice WebService non gli si puo' rispondere
SOA e CGI come hai fatto tu. Che sono tre cose che pur essendo
accomunate da fatti simili esprimono concetti assolutamente diversi
oserei dire disgiunti.
Se il povero jmicio aveva una seppur vaga idea di cosa stava chiedendo
(tra l'altro voleva indicazioni su eventuale documentazione), non puoi
che aver contribuito ad incasinargliela: agitata non shakerata.
--
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'
Dr.UgoGagliardelli
19 anni fa
Permalink
Dr.UgoGagliardelli wrote:
[...]
...
P.S. Il fatto che nella tua implementazione di SOA non si parli di
WebServices, nulla toglie alla bonta' della tua soluzione. Per cui non
si puo' parlare di critica in assoluto.
--
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'
Massimiliano Toninelli
19 anni fa
Permalink
Scherzi a parte, mi e' sembrato corretto, onesto e doveroso puntualizzare
che a uno che dice WebService non gli si puo' rispondere SOA e CGI come
hai fatto tu. Che sono tre cose che pur essendo accomunate da fatti simili
esprimono concetti assolutamente diversi oserei dire disgiunti.
Leggendo l'articolo che c'è questo mese su Sistem i, ex iSeries, ex As400,
ex A400/S38/S36, ex S38/36/, riporto un pezzetto:
===
La SOA: niente di nuovo?
Prima di tutto la SOA non è una tecnologia; è un'idea, un metodo
architetturale per connettere le applicazioni con i processi di business.
Più nello specifico, la SOA è il modo in cui un'azienda utilizza dei
componenti, chiamati servizi, che rappresentano delle attività di business
riutilizzabili capaci di comunicare con altri servizi tramite connessioni
flessibili.Per le aziende che già utilizzano applicazioni modulari che
interagiscono tra loro questo approccio non rappresenta una novità e la SOA
sembra solo un imbroglio irritante, l'ultimo di una lunga fila di slogan
che devono essere appresi, mentre il sistema i5 continua tranquillamente a
gestire le applicazioni cruciali dell'azienda.
Ancora confusi? Niente paura. La SOA è uno degli argomenti nei quali la
definizione fornisce solo un abbozzo del significato reale, soprattutto
perché ogni
esperto di SOA fornisce una definizione leggermente differente. In ogni
caso, alla base di tutte le definizioni c'è il concetto di collegare
differenti applicazioni tramite connessioni flessibili. "Una delle cose che
mi appassiona nell'affrontare la SOA, è che non contiene niente di nuovo."
sostiene Aaron Bartell,
sviluppatore software presso la Krengel Technology, Inc. "Sarebbe stato
meglio definirla WOA, cioè Web-Oriented Architecture (architettura
orientata al Web), in quanto la 'SOA' esiste fin dai tempi in cui abbiamo
iniziato ad eseguire più di un'applicazione sulla stessa macchina. Il
programma A chiama il programma B. Il programma A utilizza un servizio
fornito dal programma B. Non c'è nulla di nuovo in questo. L'unica
differenza è che il tutto viene fatto su TCP/IP, con HTTP e SOAP, WSDL e
XML. Connettiamo sistemi differenti per mezzo di una linea TCP/IP, con ad
un'estremità un
server HTTP in ascolto, in attesa di un input XML. Che cos'ha la SOA di
diverso rispetto a quello che abbiamo fatto fino ad ora?". Secondo alcune
dinamiche aziende i5, la SOA non è molto differente da un approccio forte ai
servizi Web.
===
Se il povero jmicio aveva una seppur vaga idea di cosa stava chiedendo
(tra l'altro voleva indicazioni su eventuale documentazione), non puoi che
aver contribuito ad incasinargliela: agitata non shakerata.
Questo non è un forum di discussione?? Non ci sono qui gli utonti, gli
utenti, i dottori, gli avvocati, pulcinella, arlecchino etc.etc. ?? :-))
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Dr.UgoGagliardelli
19 anni fa
Permalink
...
Perfettamente d'accordo, non a caso ho specificato che la tua e' una
possibile implementazione di SOA seppur fatta con il CGI.
Ribadisco comunque che i WebServices sono uno strumento potenzialmente
utile per la SOA, ma possono rendere servizi autonomi, ovvero
partecipare alla SOA di qualcun altro.
L'internet e' piena di servizi di questo tipo, fini a se stessi ma
utilizzabili da chiunque nelle proprie applicazioni. Come? Con uno
standard: i WebServices.
Pensa come sarebbe bello interrogare un WebService per richiedere, ad
esempio, le parita' delle valute in tempo reale invece di interrogare un
file delle ACG potenzialmente vecchio di settimane nella migliore delle
ipotesi. Esiste gia'. Guarda su http://www.webservicelist.com/ ce ne
sono un'infinita', gia' pronti gratis o no, con il loro bello schema XML
gia' pronto.
--
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'
Stefano P.
19 anni fa
Permalink
[...]
Post by Dr.UgoGagliardelli
Pensa come sarebbe bello interrogare un WebService per richiedere, ad
esempio, le parita' delle valute in tempo reale invece di interrogare
un file delle ACG potenzialmente vecchio di settimane nella migliore
delle ipotesi.
Tra poco dovrei terminare un "gioco" che da rpg interroga un webservice per
controllare le partite iva...
...per ora funzionicchia, entro la prossima settimana dovrei "metterlo in
produzione".
Post by Dr.UgoGagliardelli
ce ne sono un'infinita', gia' pronti gratis o no, con il loro bello
schema XML gia' pronto.
E, in buona sostanza, con Rational si genera in automatico la classe per
interrogarli e l'rpg usare quella classe :-)


Buon lavoro
Stefano
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Massimiliano Toninelli
19 anni fa
Permalink
...
Interessante! Il problema è imparare il WSDC!!!

Propongo un qualcosa, perchè nel sondaggio non c'entra nulla. L'ho proposta
altre volte ...

Ma perchè non proviamo a pensare di trovarci, in max una decina o giù di lì
e ci organizziamo un workshop da qualche parte a rotazione e fare dei mini
corsi tenuti da noi stessi. Mezz'ora / un'ora ciascuno ( chi ne ha voglia )
in modo da "insegnare" agli altri; oppure scambi di opinioni, magari di
sabato o domenica!!!

Ognuno di noi propone un argomento e lo spiega agli altri!!! La cosa bella
sarebbe che non è tenuto da tutti, ma tutti da tutti!
Esempio: tu o Danilo state spiegando come funziona il WDSC e andate sul Web
Service; chi meglio del Doc Gargliardelli puo' spiegare ed ampliare il
concetto? :-)
Poi intanto che il Doc parla di metodi di anni e anni fa', entra in
Discussione Obelix che ci fa' vedere il suo pc che va' ancora a carbone con
su Os/2 :-))

Per farla breve: io vorrei sapere di più ma non ho tempo di leggere il
manuale ed iniziare! Tu magari vuoi sapere qualcosa che so' io e che non hai
tempo di leggere il manuale ed iniziare! Un altro non sa' un tuboo, ma viene
perchè vuole imparare!!!
Nessuno nasce Maestro! ( tranne il Doc si intende!)

Ne parliamo o no?? Io sono disposto a mettere la mia sala riunioni!
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Dr.UgoGagliardelli
19 anni fa
Permalink
Post by Massimiliano Toninelli
Poi intanto che il Doc parla di metodi di anni e anni fa', entra in
Discussione Obelix che ci fa' vedere il suo pc che va' ancora a carbone con
su Os/2 :-))
Se per caso vedessi uno con nasone baffoni e occhiali finti che reca in
mano una di quelle clave di plastica, tutto in stile perfettamente
carnevalesco, sospetta che nella clava sia stato colato del cemento.
:-)
--
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'
Stefano P.
19 anni fa
Permalink
...
Beh, ammetto che non sono ancora riuscito a mettere in debug (con Rational)
*contemporaneamente* sia l'rpg che il java che mi servono per quel lavoro...
Post by Massimiliano Toninelli
Propongo un qualcosa, perchè nel sondaggio non c'entra nulla. L'ho
proposta altre volte ...
Ma perchè non proviamo a pensare di trovarci, in max una decina o giù
di lì e ci organizziamo un workshop da qualche parte a rotazione e
fare dei mini corsi tenuti da noi stessi. Mezz'ora / un'ora ciascuno
( chi ne ha voglia ) in modo da "insegnare" agli altri; oppure scambi
di opinioni, magari di sabato o domenica!!!
L'idea mi pare buona; il problema, in termini di comunicazione, è che chi
spiega deve da una parte avere le idee ben chiare e dall'altra deve saper
comunicare con efficacia... questo, in particolare, è vero quando si hanno
"i minuti contati" :o|
Post by Massimiliano Toninelli
Ognuno di noi propone un argomento e lo spiega agli altri!!! La cosa
bella sarebbe che non è tenuto da tutti, ma tutti da tutti!
Esempio: tu o Danilo state spiegando come funziona il WDSC
Danilo, vai avanti tu :-)
Post by Massimiliano Toninelli
Ne parliamo o no?? Io sono disposto a mettere la mia sala riunioni!
Parliamone... dopo tutto si avvicina il periodo canonico del ca**eggio del
newsgroup :-)


Ciao
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Massimiliano Toninelli
19 anni fa
Permalink
Post by Stefano P.
L'idea mi pare buona; il problema, in termini di comunicazione, è che chi
spiega deve da una parte avere le idee ben chiare e dall'altra deve saper
comunicare con efficacia... questo, in particolare, è vero quando si hanno
"i minuti contati" :o|
Don't worry!!! Proviamo!
Post by Stefano P.
Post by Massimiliano Toninelli
Ognuno di noi propone un argomento e lo spiega agli altri!!! La cosa
bella sarebbe che non è tenuto da tutti, ma tutti da tutti!
Esempio: tu o Danilo state spiegando come funziona il WDSC
Danilo, vai avanti tu :-)
Post by Massimiliano Toninelli
Ne parliamo o no?? Io sono disposto a mettere la mia sala riunioni!
Parliamone... dopo tutto si avvicina il periodo canonico del ca**eggio del
newsgroup :-)
Cavolo ... domani vado a cazzeggaire alla grande: sono al Salone del Gusto
di Torino!!!
Parto verso le 07, quindi leggero' al rientro!!
Meglio ... il giorno dopo ! :-)
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Stefano P.
19 anni fa
Permalink
Post by Massimiliano Toninelli
Post by Stefano P.
Parliamone... dopo tutto si avvicina il periodo canonico del
ca**eggio del newsgroup :-)
Cavolo ... domani vado a cazzeggaire alla grande: sono al Salone del
Gusto di Torino!!!
Alla faccia dei Web Services! ;-)
Post by Massimiliano Toninelli
Parto verso le 07, quindi leggero' al rientro!!
Meglio ... il giorno dopo ! :-)
Se il salone è "del gusto" allora ti consiglio per domani di non curarti
affatto di questo newsgroup :-)


Con simpatia
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Stefano P.
19 anni fa
Permalink
Post by Massimiliano Toninelli
Post by Stefano P.
L'idea mi pare buona; il problema, in termini di comunicazione, è
che chi spiega deve da una parte avere le idee ben chiare e
dall'altra deve saper comunicare con efficacia... questo, in
particolare, è vero quando si hanno "i minuti contati" :o|
Don't worry!!! Proviamo!
Oh, questa dell'efficacia della comunicazione è una mia preoccupazione
personale: se devo spiegare qualcosa a qualcuno preferisco avere le idee ben
chiare, diversamente rischio solo di fare confusione...
...e, al momento, non credo ancora di avere le idee sufficientemente chiare
con WSDc: per lo meno, non le ho abbastanza chiare quanto vorrei :-)
Post by Massimiliano Toninelli
Post by Stefano P.
Post by Massimiliano Toninelli
Ognuno di noi propone un argomento e lo spiega agli altri!!! La cosa
bella sarebbe che non è tenuto da tutti, ma tutti da tutti!
Esempio: tu o Danilo state spiegando come funziona il WDSC
Danilo, vai avanti tu :-)
Vai avanti tu che mi sembra abbia le idee più chiare delle mie sul WSDc...


Saluti
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Id&Fix
19 anni fa
Permalink
Post by Stefano P.
Tra poco dovrei terminare un "gioco" che da rpg interroga un webservice per
controllare le partite iva...
...per ora funzionicchia, entro la prossima settimana dovrei "metterlo in
produzione".
naaaaa!!!
ho finito di svilupparlo l'altra settimana!!!!
ho controllato 20mila partite iva in poche ore :-)

Id&Fix
Stefano P.
19 anni fa
Permalink
Post by Id&Fix
Post by Stefano P.
Tra poco dovrei terminare un "gioco" che da rpg interroga un
webservice per controllare le partite iva...
...per ora funzionicchia, entro la prossima settimana dovrei
"metterlo in produzione".
naaaaa!!!
ho finito di svilupparlo l'altra settimana!!!!
ho controllato 20mila partite iva in poche ore :-)
La parte interessante - per me - è che non abbiamo il web server attivo da
qualche parte (per cui ho copiato un bel po' di jar dove servivano)...
...e poi è il mio primo lavoro "serio" con WSDc che mi genera sia l'rpg (da
rivedere) che il resto :-)
Post by Id&Fix
Id&Fix
Saluti
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Id&Fix
19 anni fa
Permalink
Post by Stefano P.
La parte interessante - per me - è che non abbiamo il web server attivo da
qualche parte (per cui ho copiato un bel po' di jar dove servivano)...
...e poi è il mio primo lavoro "serio" con WSDc che mi genera sia l'rpg (da
rivedere) che il resto :-)
non ho intrapreso la tua strada, troppo complessa per i miei gusti... anche
se mi sfizierebbe metterci il naso...
ho semplicemente preso "spunto" da san Scott Klement realizzando un srvpgm
di puro RPG

Id&Fix
Stefano P.
19 anni fa
Permalink
Post by Id&Fix
Post by Stefano P.
La parte interessante - per me - è che non abbiamo il web server
attivo da qualche parte (per cui ho copiato un bel po' di jar dove
servivano)... ...e poi è il mio primo lavoro "serio" con WSDc che mi
genera sia l'rpg (da rivedere) che il resto :-)
non ho intrapreso la tua strada, troppo complessa per i miei gusti...
Meno di quello che potrebe sembrare: da certi web service WSDc può generare
quanto occorre (ed è quello che ho fatto): genera la classe java per il web
service e l'rpg per chiamare la classe java.
A quel punto per il java ho aggiunto i jar che mancano (non stiamo usando il
server web), per l'rpg ho adattato la base di codice generato alle mie
necessità.
Post by Id&Fix
anche se mi sfizierebbe metterci il naso...
Secondo me può essere più produttivo - nel mio caso - l'approccio via
WSDc...
Post by Id&Fix
ho semplicemente preso "spunto" da san Scott Klement realizzando un
srvpgm di puro RPG
Dato che - nel mio caso - oltre che il collegamento c'è da andare a gestire
anche l'XML, tramite il java ho nascosto la complessità e mi sono occupato
solo di chiamare la classe e leggere quanto mi risponde; il resto è
programmazione più o meno "tradizionale"...
Post by Id&Fix
Id&Fix
Con interesse
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Id&Fix
19 anni fa
Permalink
Post by Stefano P.
Meno di quello che potrebe sembrare: da certi web service WSDc può generare
quanto occorre (ed è quello che ho fatto): genera la classe java per il web
service e l'rpg per chiamare la classe java.
si, so che esiste questa possibilità, ma non ci ho mai messo il naso
Post by Stefano P.
Dato che - nel mio caso - oltre che il collegamento c'è da andare a gestire
anche l'XML, tramite il java ho nascosto la complessità e mi sono occupato
solo di chiamare la classe e leggere quanto mi risponde; il resto è
programmazione più o meno "tradizionale"...
Con interesse
Stefano P.
ti allego il codice del lavoro del buon Scott, con le mie modifiche per
adattarlo al VIES
come vedrai è di una semplicità disarmante

Id&Fix

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* this service program check on VIES if VAT number is valid
*
* Copyright by Id&Fix (newsgroup: it.comp.as400)
* this program is based on a source by Scott C. Klements
* and uses his LIBHTTP (http://www.scottklement.com/)
* Many thanks to Scott for his great job
*
* Redistribution and use of this source is freely permitted.
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

H NOMAIN bnddir('QC2LE':'HTTPAPI')
H decedit('0,') datedit(*dmy/) option(*srcstmt:*nodebugio)
H expropts(*resdecpos)


DVatValid PR 10i 0
D ciso 2 value
D piva 20 value

DIncoming PR
D Result n
D depth 10i 0 value
D name 1024A varying const
D path 24576A varying const
D value 32767a varying const
D attrs * dim(32767)
D const options(*varsize)
*--------------------------------------------------------------*
*
* check on Vies if VAT number is valid
*
* Parameters ciso (char 2) INPUT
* piva (char 20) INPUT
* esito (char 2) OUTPUT
* name (char 50) OUTPUT
* address (char 50) OUTPUT
*
* ciso is the iso code of the nation
* piva contanins the Vat number
*
* return code:
* 0 : Vat number not valid
* 1 : Vat number valid
* -1 : error connecting to Vies
*
*--------------------------------------------------------------*

**********************
* VatValid
**********************

PVatValid B export

DVatValid PI 10i 0
D ciso 2 value
D piva 20 value

/copy libhttp/qrpglesrc,httpapi_h

D true S N inz(*on)
D false S N inz(*off)
D soap S 32767A varying
D result S N
D rc S 10i 0

/free
soap =
'<?xml version="1.0" encoding="UTF-8" standalone="no"?> ' +
' <SOAP-ENV:Envelope '+
'xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" '+
' xmlns:apachesoap="http://xml.apache.org/xml-soap" '+
' xmlns:impl="urn:ec.europa.eu:taxud:vies:services:checkVat" '+
' xmlns:intf="urn:ec.europa.eu:taxud:vies:services:checkVat" '+
' xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" '+
' xmlns:tns1="urn:ec.europa.eu:taxud:vies:services:checkVat:types" '+
' xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" '+
' xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" '+
' xmlns:xsd="http://www.w3.org/2001/XMLSchema" '+
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > '+
' <SOAP-ENV:Body> '+
' <mns1:checkVat '+
'xmlns:mns1="urn:ec.europa.eu:taxud:vies:services:checkVat"> '+
' <countryCode>' + %trim(ciso) + '</countryCode> '+
' <vatNumber>' + %trim(piva) + '</vatNumber> '+
' </mns1:checkVat> '+
' </SOAP-ENV:Body> '+
' </SOAP-ENV:Envelope> ';


rc = http_url_post_xml(
'http://ec.europa.eu/taxation_customs/vies/api/checkVatPort':
%addr(soap) + 2:
%len(soap):
*NULL:
%paddr(Incoming):
%addr(Result):
HTTP_TIMEOUT:
HTTP_USERAGENT:
'text/xml':
'checkVat');

if (rc <> 1);
return -1;
else;
if (Result = true);
return 1;
else;
return 0;
endif;
endif;


/end-free

P E
************
* Incoming callback
************

PIncoming B

DIncoming PI
D Result n
D depth 10i 0 value
D name 1024A varying const
D path 24576A varying const
D value 32767a varying const
D attrs * dim(32767)
D const options(*varsize)

D true S N inz(*on)
D false S N inz(*off)


/free
if (name = 'valid');
if (value = 'true');
Result = true;
else;
Result = false;
endif;
endif;
/end-free

P E
Stefano P.
19 anni fa
Permalink
...
Per prima cosa: GRAZIE :-)
Appena ho tempo (e non appena torno a mettere le mani su quel lavoro) ci
guardo; del resto usiamo già con profitto altri service program di Scott
Klement ;-)

È probabile che - per questa volta - non andrò a mettere in moto la java
virtual machine...


Buon lavoro
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Id&Fix
19 anni fa
Permalink
Post by Stefano P.
Per prima cosa: GRAZIE :-)
Appena ho tempo (e non appena torno a mettere le mani su quel lavoro) ci
guardo; del resto usiamo già con profitto altri service program di Scott
Klement ;-)
quando hai verificato, puoi darci una conferma? sembra che Massimiliano
abbia dei problemi e non riesco a capire se stanno nel mio codice

grazie
Id&Fix
Massimiliano Toninelli
19 anni fa
Permalink
Post by Id&Fix
Post by Stefano P.
Per prima cosa: GRAZIE :-)
Appena ho tempo (e non appena torno a mettere le mani su quel lavoro) ci
guardo; del resto usiamo già con profitto altri service program di Scott
Klement ;-)
quando hai verificato, puoi darci una conferma? sembra che Massimiliano
abbia dei problemi e non riesco a capire se stanno nel mio codice
Oh... GRANDI GURU... !!!
Sono riuscito a trovare l'arcano: visto che la connessione gira sulla porta
80, il firewall segata le info connection!!!
Adesso funzio alla grande!!!
Grazie id&Fix : ti viene un'altra bottiglia di birra!!!! :-)
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Id&Fix
19 anni fa
Permalink
Post by Massimiliano Toninelli
Sono riuscito a trovare l'arcano: visto che la connessione gira sulla porta
80, il firewall segata le info connection!!!
Adesso funzio alla grande!!!
Grazie id&Fix : ti viene un'altra bottiglia di birra!!!! :-)
ehm... facciamo una per ogni partita iva non corretta che scoprirai... mi sa
che faresti prima a comperare una birreria :-)))


Id&Fix
Massimiliano Toninelli
19 anni fa
Permalink
Post by Id&Fix
Post by Massimiliano Toninelli
Sono riuscito a trovare l'arcano: visto che la connessione gira sulla
porta
Post by Massimiliano Toninelli
80, il firewall segata le info connection!!!
Adesso funzio alla grande!!!
Grazie id&Fix : ti viene un'altra bottiglia di birra!!!! :-)
ehm... facciamo una per ogni partita iva non corretta che scoprirai... mi sa
che faresti prima a comperare una birreria :-)))
Ci tengo a te: voglio evitare che diventi un alcolizzato! Meglio non
rischiare: ti và una bottiglia ! Guadagni in salute!!! :-)
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Stefano P.
19 anni fa
Permalink
Post by Id&Fix
Post by Stefano P.
Appena ho tempo (e non appena torno a mettere le mani su quel
lavoro) ci guardo; del resto usiamo già con profitto altri service
program di Scott Klement ;-)
quando hai verificato, puoi darci una conferma? sembra che
Massimiliano abbia dei problemi e non riesco a capire se stanno nel
mio codice
Ok, ma andrà a finire per lo meno a venerdì...
Post by Id&Fix
grazie
Id&Fix
Ciao
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Id&Fix
19 anni fa
Permalink
Post by Stefano P.
Post by Id&Fix
quando hai verificato, puoi darci una conferma? sembra che
Massimiliano abbia dei problemi e non riesco a capire se stanno nel
mio codice
Ok, ma andrà a finire per lo meno a venerdì...
ti ringrazio, ma Massimiliano ha già risolto e la mia reputazione è salva!
:-))

Id&Fix
Stefano P.
19 anni fa
Permalink
Post by Id&Fix
ti ringrazio, ma Massimiliano ha già risolto e la mia reputazione è
salva! :-))
Lo sarebbe stata comunque ;-)

Per quanto mi riguarda il lavoro è da terminare quindi - eventualmente -
visto che siete stati così bravi vi chiederò i chiarimenti opportuni ;-)
Post by Id&Fix
Id&Fix
Ciao
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Massimiliano Toninelli
19 anni fa
Permalink
Post by Id&Fix
ti allego il codice del lavoro del buon Scott, con le mie modifiche per
adattarlo al VIES
come vedrai è di una semplicità disarmante
Ma che bravo !!! Ti viene una birra

Ho provato il pgm, ma mi da' sempre errore -1, ovvero " rc =
http_url_post_xml( " mi da' 500.
La connessione avviene, lo vedo che contatta il 147.67.4.26
Qualche idea?
TIA
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Id&Fix
19 anni fa
Permalink
Post by Massimiliano Toninelli
Ma che bravo !!! Ti viene una birra
se fai come con Obelix morirò di sete! :-PP
Post by Massimiliano Toninelli
Ho provato il pgm, ma mi da' sempre errore -1, ovvero " rc =
http_url_post_xml( " mi da' 500.
HTTP 500 - Internal Server Error
Post by Massimiliano Toninelli
La connessione avviene, lo vedo che contatta il 147.67.4.26
Qualche idea?
ho appena provato e mi funziona, per lo meno con alcune partite iva italiane

Id&Fix
Massimiliano Toninelli
19 anni fa
Permalink
Post by Id&Fix
Post by Massimiliano Toninelli
Ma che bravo !!! Ti viene una birra
se fai come con Obelix morirò di sete! :-PP
Venivi alla cena del raduno...! :-)
Post by Id&Fix
Post by Massimiliano Toninelli
Ho provato il pgm, ma mi da' sempre errore -1, ovvero " rc =
http_url_post_xml( " mi da' 500.
HTTP 500 - Internal Server Error
Fino a lì c'ero arrivato anche io!!! Un cicinino di più ?? :-)
Post by Id&Fix
Post by Massimiliano Toninelli
La connessione avviene, lo vedo che contatta il 147.67.4.26
Qualche idea?
ho appena provato e mi funziona, per lo meno con alcune partite iva italiane
Ho fatto un copia ed incolla! Rivedo che non siano andate perse le
virgolette od altro
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Stefano P.
19 anni fa
Permalink
Post by Id&Fix
Post by Massimiliano Toninelli
La connessione avviene, lo vedo che contatta il 147.67.4.26
Qualche idea?
ho appena provato e mi funziona, per lo meno con alcune partite iva italiane
Attenzione che - con taluni paesi o in certi orari - il servizio non
risponde proprio...
...a prescindere dall'rpg e/o dal java :-)


Ciao
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Massimiliano Toninelli
19 anni fa
Permalink
Post by Id&Fix
Post by Massimiliano Toninelli
Ma che bravo !!! Ti viene una birra
se fai come con Obelix morirò di sete! :-PP
Post by Massimiliano Toninelli
Ho provato il pgm, ma mi da' sempre errore -1, ovvero " rc =
http_url_post_xml( " mi da' 500.
HTTP 500 - Internal Server Error
Post by Massimiliano Toninelli
La connessione avviene, lo vedo che contatta il 147.67.4.26
Qualche idea?
ho appena provato e mi funziona, per lo meno con alcune partite iva italiane
Va' bene una chiamata così?
rc = VatValid('IT':'00312580194');
--
Massimiliano

----------------------------------------
In determinate situazioni ...un grammo di pratica vale più di un chilo di
teoria!!!

http://www.toninelli.it
Id&Fix
19 anni fa
Permalink
Post by Massimiliano Toninelli
Va' bene una chiamata così?
rc = VatValid('IT':'00312580194');
yes, fermo restando che il campo partita iva è lungo 20, non vorrei che gli
dia fastidio il fatto di essere più corto

Id&Fix
Stefano P.
18 anni fa
Permalink
Post by Id&Fix
Post by Massimiliano Toninelli
rc = VatValid('IT':'00312580194');
yes, fermo restando che il campo partita iva è lungo 20, non vorrei
che gli dia fastidio il fatto di essere più corto
No, non da fastidio perché al web service viene passato il campo senza gli
spazi...
Post by Id&Fix
Id&Fix
Ciao
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Stefano P.
18 anni fa
Permalink
Post by Id&Fix
ti allego il codice del lavoro del buon Scott, con le mie modifiche
per adattarlo al VIES
come vedrai è di una semplicità disarmante
Ed infatti ha funzionato al primo colpo (di "copia, incolla e ricontrolla"):
GRAZIE :-)


Ora devo capire come reperire (se restituiti) gli altri campi...
Post by Id&Fix
Id&Fix
Grazie di nuovo
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Id&Fix
18 anni fa
Permalink
Post by Stefano P.
Ora devo capire come reperire (se restituiti) gli altri campi...
Incoming viene richiamata per ciascun campo restituito, quindi in

/free
if (name = 'valid');
if (value = 'true');
Result = true;
else;
Result = false;
endif;
endif;
/end-free

se al posto di 'valid' metti il nome di un altro campo, te lo puoi
recuperare.
meglio ancora una select:

/free
select;
when name='valid';
etc etc
when name='countryCode';
etc etc
when name='vatNumber';
etc etc
when name='requestDate':
etc etc
when name='vatNumber';
etc etc
when name='requestDate':
etc etc
when name='name';
etc etc
when name='address':
etc etc
endsl;


Id&Fix
Stefano P.
18 anni fa
Permalink
Post by Id&Fix
Post by Stefano P.
Ora devo capire come reperire (se restituiti) gli altri campi...
E, dopo aver scritto, mi ero "imbattuto" in debug con la funzione
incoming...
Post by Id&Fix
Incoming viene richiamata per ciascun campo restituito, quindi in
/free
if (name = 'valid');
if (value = 'true');
Result = true;
else;
Result = false;
endif;
endif;
/end-free
se al posto di 'valid' metti il nome di un altro campo, te lo puoi
recuperare.
/free
select;
when name='valid';
etc etc
when name='countryCode';
etc etc
when name='vatNumber';
etc etc
etc etc
when name='vatNumber';
etc etc
etc etc
when name='name';
etc etc
etc etc
endsl;
GRAZIE della conferma, in debug ero arrivato ad una conclusione analoga
poi ho letto meglio cosa dice la documentazione nei sorgenti forniti da
Scott Klement:
nel membro HTTPXMLR4, file QRPGLESRC (della libreria LIBHTTP) è riportato
abbastanza chiaramente a cosa serve la funzione "incoming", in pratica è la
"peEndProc = (input) call-back procedure to call at the end of each XML
element received".

Ora termino di modificarla leggermente (con una bella select ;-) poi via con
i test :-)
Post by Id&Fix
Id&Fix
Grazie di nuovo
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
Stefano P.
18 anni fa
Permalink
Post by Stefano P.
Ora devo capire come reperire (se restituiti) gli altri campi...
Che per ora, invece, non sembra interessino più...


In definitiva, con una semplice modifica al tipo di dato restituito, abbiamo
risolto egregiamente.


A buon rendere
Stefano P.
--
"Niuna impresa, per minima che sia,
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere, senza potere, senza con amor volere"
[Anonimo fiorentino, XIV sec.]

(togliere le "pinzillacchere" dall'indirizzo email ;-)
"GdG" @@aa>
19 anni fa
Permalink
Post by Massimiliano Toninelli
Ancora confusi? Niente paura.
Quello che ha scritto l'articolo è molto confuso.
Come la maggioranza degli autori di articoli di quella rivista.
Continua a leggere su narkive:
Loading...