Hi Tony, I have a example parsing JSON-data from OpenExchangeRates.org For test: 1) You need HTTPAPI and YAJL from Scott Klement 2) Take the HTTPAPI Command to Download the file from [1]http://openexchangerates.org/api/latest.json?app_id=yourid or take the JSON file at the appendix 3) Look at the GETCURRAT program to parse the JSON data 4) It is possible too to access a REST webservice with SQL since V7R1. This example is a access to Google Maps Webservice SELECT SYSTOOLS.HTTPGETCLOB ('[2]https://maps.googleapis.com/maps/api/geocode/json?address=Renntals tra%C3%9Fe%2020,74360%20Ilsfeld&components=country:DE','') From SYSIBM.SYSDUMMY1; Best regards Rainer Rainer Ross IT-Consulting [3]www.myhofi.com - a smarter way to book hotels - powered by IBM i Kaufering Germany Am 25.04.2016 um 21:48 schrieb Tony Cesarios: [[4]cid:image001.gif@01D19F7F.48A941D0] Hi, Just wondering if anyone has a sample program using HTTPAPI to execute a GET from an external URL using REST and JSON. Had a look at YAJL as a solution. We need to go and retrieve orders which contain about 15 elements (parameters) and process them into our iSeries. Regards, Tony Cesarios ----------------------------------------------------------------------- This is the FTPAPI mailing list. To unsubscribe, please go to: [5]http://www.scottklement.com/mailman/listinfo/ftpapi ----------------------------------------------------------------------- References 1. http://openexchangerates.org/api/latest.json?app_id=yourid 2. https://maps.googleapis.com/maps/api/geocode/json?address=Renntalstra%C3%9Fe%2020,74360%20Ilsfeld&components=country:DE 3. http://www.myhofi.com/ 4. cid:image001.gif@01D19F7F.48A941D0 5. http://www.scottklement.com/mailman/listinfo/ftpapi
Attachment:
Currency_2016-04-25.js
Description: JavaScript source
ctl-opt alloc(*teraspace) option(*nodebugio) bnddir('JSNUTL'); //------------------------------------------------------------------// // // // JSON Parse OpenExchangeRates // // // //----------------- // // R.Ross 02.2015 * // //------------------------------------------------------------------// // Files // //------------------------------------------------------------------// dcl-f curcodp disk keyed usage(*update); dcl-f curratp disk keyed usage(*update:*output); //------------------------------------------------------------------// // Copies // //------------------------------------------------------------------// /copy yajl/qrpglesrc,yajl_h //------------------------------------------------------------------// // Table Currencies // //------------------------------------------------------------------// dcl-s d#count uns(10) inz(*zero); // CurrencyCounter dcl-ds t#cur dim(200) qualified; // CurrencyTable t#cur like(crcur); // Currency t#rate like(crrate); // Rate t#rateur like(crrate); // Rate Euro end-ds; //------------------------------------------------------------------// // Variables // //------------------------------------------------------------------// dcl-s h#errmsg varchar(500); // ErrorMessage dcl-s h#file varchar(256); // File dcl-s h#doc like(yajl_val); dcl-s h#node like(yajl_val); dcl-s h#val like(yajl_val); dcl-s h#key varchar(50); dcl-s h#base char(03); // BaseCurrency USD dcl-s h#cur char(03); // Currency dcl-s h#basrat like(crrate); // BaseRate dcl-s h#eurrat like(crrate); // EuroRate dcl-s h#rate like(crrate); // CurrencyRate dcl-s h#sec uns(10); // Seconds dcl-s h#date date; // Date dcl-s h#ind int(10) inz(*zero); // Index dcl-s h#count int(10) inz(*zero); // Counter //------------------------------------------------------------------// // Main // //------------------------------------------------------------------// exsr main; *inlr = *on; //------------------------------------------------------------------// // Main // //------------------------------------------------------------------// begsr main; clear t#cur; // CurrencyTable h#file = '/tmp/Currency_2016-04-25.js'; h#doc = yajl_stmf_load_tree(h#file:h#errmsg); if h#doc <> *null; h#base = yajl_get_string(yajl_object_find(h#doc:'base')); h#sec = yajl_get_number(yajl_object_find(h#doc:'timestamp')); h#date = getdate(h#sec); h#node = yajl_object_find(h#doc:'rates'); dow yajl_object_loop(h#node:h#ind:h#key:h#val); h#cur = h#key; h#rate = yajl_get_number(h#val); d#count += 1; t#cur(d#count).t#cur = h#cur; t#cur(d#count).t#rate = h#rate; select; when h#cur = 'EUR'; h#eurrat = h#rate; when h#cur = h#base; h#basrat = h#rate; endsl; enddo; wrtcurrat(%addr(t#cur):d#count:h#date); // Write CurrencyRates endif; endsr; //------------------------------------------------------------------// // Procedure - Write Currency Rates into CURRATP // //------------------------------------------------------------------// dcl-proc wrtcurrat; dcl-pi *n; ##array_p pointer const; // ArrayPointer ##count like(d#count) const; // Counter ##date like(h#date) const; // Date end-pi; dcl-ds p#cur likeds(t#cur) based(##array_p); dcl-s p#fact like(crrate); // Factor dcl-s p#ind int(10) inz(*zero); // Index eval(h) p#fact = h#basrat / h#eurrat; // Factor = Base/Euro for p#ind = 1 to ##count; eval(h) t#cur(p#ind).t#rateur = t#cur(p#ind).t#rate * p#fact; cdcur = t#cur(p#ind).t#cur; // Currency chain (cdcur) curcodf; cdrate = t#cur(p#ind).t#rateur; // Currency-Rate cdcurdat = ##date; // Currency-Date if %found(curcodp); update curcodf; endif; crcur = t#cur(p#ind).t#cur; // Currency crdate = ##date; // Currency-Date chain (crcur:crdate) curratf; crrate = t#cur(p#ind).t#rateur; // Currency-Rate if %found(curratp); update curratf; else; write curratf; endif; endfor; end-proc; //------------------------------------------------------------------// // Procedure - Get Date from Unix Timestamp // //------------------------------------------------------------------// dcl-proc getdate; dcl-pi *n like(p#date); // Date ##sec uns(10) const; // Seconds end-pi; dcl-s p#date date; // Date dcl-s p#stmp timestamp; // TimeStamp p#stmp = %timestamp('1970-01-01-00.00.00.000000'); // UnixTime return %date(p#stmp + %seconds(##sec)); // UnixTime + Seconds end-proc; //------------------------------------------------------------------//
----------------------------------------------------------------------- This is the FTPAPI mailing list. To unsubscribe, please go to: http://www.scottklement.com/mailman/listinfo/ftpapi -----------------------------------------------------------------------