"C'mon, Man!"
TMYour post asks about ThisPage, RemoveHeader, and ServerResponse but you wanted the reply to be about how to use a token.
"C'mon, Man!"
TM 
In working with APIs I've found the best strategy FOR ME has been
1. Make it work with Postman
2. Using the Postman stuff as a guide, make it work with the NetDemo app.
3. Having figured that out, code it into my app.
In my apps that need to call an API I typically have two procedures.
1. Fetches a token. In my case, it first checks to see whether it has an existing token available that hasn't expired.
2. A generic "fetch stuff" API call.
The "fetch stuff" procedure (sendGetPacket) is a generic window procedure having a prototype of
(STRING pURL, STRING pToken,StringTheory pST),LONGThe procedure that wants to fetch something creates the URL for the endpoint creates the required URL and passes the URL, the token, and a String Theory object to the sendGetPacket procedure. When it's done, the StringTheory parameter contains what I've fetched from the API endpoint and I do what I do with it in the calling procedure.
The sentGetPacket has this code, much of which is snipped out of the NetDemo web client procedure.
PacketSend ROUTINE
DATA
CODE
ThisWebClient.SetAllHeadersDefault()
ThisWebClient.HeaderOnly = 0
ThisWebClient.Cookie = ''
ThisWebClient.CustomHeader = 'Authorization: Bearer '&clip(pToken)
ThisWebClient.Referer = ''
ThisWebClient.AsyncOpenTimeOut = 2200 ! 22 seconds
ThisWebClient.InActiveTimeout = GLO:QueryTimeout ! 6000 ! 20 seconds
ThisWebClient.SSLMethod = NET:SSLMethodTLS
ThisWebClient.HTTPVersion = 'HTTP/1.1'
ThisWebClient.ContentType = 'application/x-www-form-urlencoded'
ThisWebClient.ConnectionKeepAlive = FALSE
ThisWebClient.CanUseProxy = GLO:CanUseProxy
ThisWebClient.ProxyServer = GLO:proxyServer
ThisWebClient.ProxyPort = GLO:proxyPort
ThisWebClient.Fetch(clip(pURL))
The EVENT:OpenWindow event has this embed
! End of "Window Event Handling"
OF EVENT:OpenWindow
! [Priority 5000]
DO PacketSend Other embeds:
ThisWebClient.ErrorTrap PROCEDURE(string errorStr,string functionName)
! Start of "NetTalk Method Data Section"
! [Priority 5000]
! End of "NetTalk Method Data Section"
CODE
! Start of "NetTalk Method Executable Code Section"
! [Priority 2500]
if self.Error <> 0
ud.debug('error trap before parent '&clip(errorstr)&' '&clip(functionName)&' code='&ThisWebClient.Error)
AddLog('net client error '&clip(errorstr),0,0)
AddErrorLog('net client error '&clip(errorstr)&' url='&left(pURL,80))
post(event:closewindow)
end ! if
! Parent Call
PARENT.ErrorTrap(errorStr,functionName)
! [Priority 7500]
ThisWebClient.PageReceived PROCEDURE
! Start of "NetTalk Method Data Section"
! [Priority 5000]
! End of "NetTalk Method Data Section"
CODE
! Start of "NetTalk Method Executable Code Section"
! [Priority 2500]
! Parent Call
PARENT.PageReceived
! [Priority 7500]
IF self.ServerResponse = 200
self.RemoveHeader()
LOC:RV = TRUE
pST.SetValue(self.ThisPage.GetValue())
ELSE
LOC:RV = FALSE
END !IF
post(event:closewindow)
This is all OLD CODE I wrote 6 1/2 years ago, but it's been working fine since then. YMMV. Much of it, as mentioned, appropriated from the handy dandy NetDemo example program. UD is the ClarionLive UltimateDebug object.
[edited] because I couldn't stand looking at the ugly pageReceived code I posted so I tweaked that app I pulled this from. [/edited]
HINT - that NetDemo example is handy
