Reputation: 1
I am having problems when using the YAJL tool. when moving data from IFS data to docnode (yajl), and I tried to debug the program, the docnode field contained DOCNODE SPP:000000080088ADC10.
while the data in the STMF is {"code":400,"errors":[{"code":400,"details":"invalid signature","message":"Bad Request"}],"message":"bad.request","responseTime":"20240424070955"}
this my complete code :
H DFTACTGRP(*NO) Option(*SrcStmt : *NoDebugIO)
H BNDDIR('HTTPAPI')
H BNDDIR('YAJL')
fgenpar1 if e k disk usropn
/copy qrpglesrc,httpapi_h
/include yajl_h
D list_t ds qualified
D template
D @pktnme 15a
D @pktcde 16a
D @denom 3A
D @valdity 2A
D @invblc 1A
D result ds qualified
D xode 3a varying
D success 1n
D errmsg 500a varying
D list likeds(list_t) dim(999)
D docNode s like(yajl_val)
D node s like(yajl_val)
D list s like(yajl_val)
D val s like(yajl_val)
D rc s 10I 0
D msg s 52A
D URL S 600A varying
D IFS S 5000A varying
D i s 10i 0
D X s 10i 0
D lastElem s 10i 0
D errMsg s 500a varying inz('')
D getparm PR 50A
D pkey 10A value
D gatesvckey s 50a
D getpaketx s 50a
*------------------------------------------------------------------------
*------------------------------------------------------------------------
/Free
exsr #init;
exsr #getparm;
callp http_debug(*off);
url= %trim(GETPAKETX)
+ 'key='+%trim(gatesvckey);
// Create ifs file
ifs='/tmp/datarsp.json';
// Pust http
rc = http_url_get(URL: IFS);
if rc<>1;
msg = http_error;
*inlr =*on;
endif;
docNode= yajl_stmf_load_tree ( ifs : errMsg );
if errMsg <> '';
// handle error
rspdsc = 'Timeout!';
yajl_tree_free(docNode);
*inlr = *on;
return;
endif;
node = YAJL_object_find(docNode: 'xode');
result.xode = YAJL_get_string(node);
list = YAJL_object_find(docNode: 'list');
i = 0;
dow YAJL_ARRAY_LOOP( list: i: node );
lastElem = i;
val = YAJL_object_find(docNode: 'paketName');
result.list(i).@pktnme = YAJL_get_string(val);
val = YAJL_object_find(docNode: 'paketCode');
result.list(i).@pktcde = YAJL_get_string(val);
val = YAJL_object_find(docNode: 'denom');
result.list(i).@denom = YAJL_get_string(val);
val = YAJL_object_find(docNode: 'validity');
result.list(i).@valdity= YAJL_get_string(val);
val = YAJL_object_find(docNode: 'inventoryBalance');
result.list(i).@invblc = YAJL_get_string(val);
enddo;
node = YAJL_object_find(docNode: 'success');
result.success = YAJL_is_true(node);
node = YAJL_object_find(docNode: 'errmsg');
result.errmsg= YAJL_get_string(node);
yajl_tree_free(docNode);
*inlr=*on;
return;
/End-free
*------------------------------------------------------------------------
/Free
begsr #init;
endsr;
/End-Free
*------------------------------------------------------------------------
// Get key api
gatesvckey=%trim(getparm('KEYSVC'));
// Get URL api
getpaketx=%trim(getparm('GETPAKET'));
endsr;
/End-Free
*------------------------------------------------------------------------
P getparm B
D getparm PI 50A
D pkey 10A value
D pparm s 50A
/Free
open genpar1;
chain pkey genpar1;
if %found (genpar1);
pparm=genkey;
else;
pparm=*blanks;
endif;
close genpar1;
return pparm;
/End-free
P E
this capture in directory :
solution for my problems
Upvotes: 0
Views: 28