I am new to REST API in RPGLE programming and after I get my POST Request fixed here POST Request, I know have a different problem with the GET for Tracking the UPS API
In the ACS Run SQL Script it works:
Select * from table(systools.httpgetclobverbose('https://wwwcie.ups.com/api/track/v1/details/xxxtrackingnumberxxx?locale=de_DE&returnSignature=false&returnMilestones=false&returnPOD=false',
'<httpHeader>
<header name="Authorization" value="Basic xxxacessTokenxxx(1308 charaters)"/>
<header name="transId" value="string"/>
<header name="transactionSrc" value="testing"/>
</httpHeader>'));
I have now a hard time to convert this into my RPG program. Here is the Definition and the code:
D myClob S SQLType(CLOB:1000000) CCSID(1208) INZ
D respHeader S SQLTYPE(CLOB:1000000) CCSID(1208) INZ
D myData S 100000 VARYING INZ
D HEADER S 100000 VARYING INZ
D myHeader S 2000 VARYING INZ
D myUrl S 512A VARYING INZ
D accessToken S 1500A
D null S 2B 0 INZ
C* HTTPPOST receives the accessToken here
C EVAL myURL = 'https://wwwcie.ups.com/api/track/v1'
C +'/details/xxtrackingnumberxx?locale=en_US&r'
C +'eturnSignature=false&returnMilestones=fals'
C +'e&returnPOD=false'
C EVAL myheader='<httpHeader><header name="Authoriz'
C +'ation" value="Basic '+%TRIM(accessToken)
C +'"/><header'
C +' name="transId" value="string"/><header na'
C +'me="transactionSrc" value="testing"/></htt'
C +'pHeader>'
C RESET respHeader
C RESET HEADER
C
C/EXEC SQL
C+ SELECT CAST(RESPONSEMSG AS CLOB(1000000)),
C+ CAST(responseHttpHeader AS CLOB(1000000))
C+ INTO :myClob:null, :respHeader
C+ FROM TABLE( SYSTOOLS.HTTPGETCLOBVerbose(
C+ CAST(:myURL AS VARCHAR(512)),
C+ CAST (:myheader AS CLOB(2K))))
C/END-EXEC
C
C EVAL myData = %SUBST(myClob_data:1:myClob_len)
C EVAL HEADER = %SUBST(respHeader_DATA:1:
C respHeader_LEN)
myClob_data is empty as well as respHeader_DATA. Both LEN is 0. SQLCOD = +462 SQLSTATE = 01H52 Very hard to find a lot of Infomation about those, but I was able to find more description here: IBM Memo to Users at page 22.
• The SQL statement fails to parse or The SQL statement parameter value is a blank string or NULL
I guess I have something that is formated or define incorrectly. I also get the same result with that:
Select * into :myClob:W_NULL, :W_RSPHDR from TABLE(SYSTOOLS.HTTPGETCLOBVerbose(:myURL, :myHeader).
The RDI debugger is not working. For some reason I get a decimal error in my program by a Code that isnt mention here. So I have to use the STRDBG. But it only shows 1025 characters when I use "EVAL myheader" and as the access token is 1308 characters long, I dont know how to see the full myHeader.
And as Charles mention in my previous question to look into QSYS2.HTTP_ or HTTPAPI by Scott, I can't right now sadly. Also dont wondering about the fixed form of RPG. I have to use it, but you can answer with free RPG ofc.
The SYSTOOLS works, I just need to convert it correctly, I think.. Thank you in advance.
I got the issue. As I mentioned, I was not able to see the end of my variables in STRDBG. To see it anyway, I just made multiple 1000 character long variables and substringed it all into them. The access token was not properly substringed by my code. I mixed up the length with the endposition in %SUBST. Now I get the expected result with the GET reqeust.