Faisal F N
Faisal F N

Reputation: 1

YAJL FREE RPGLE (error Parsing data Json)

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 :

enter image description here

solution for my problems

Upvotes: 0

Views: 28

Answers (0)

Related Questions