// test http post

string ls_json
string ls_url
string ls_error
int li_rc
long ll_row,ll_return
long ll_root,ll_object,ll_item
long ll_index
long ll_id,ll_data
long ll_status
string ls_data,ls_key
string ls_User,ls_PassWord, ls_token
jsonparser lnv_jsonparser
httpclient lnv_httpclient

// create
lnv_httpclient = create httpclient
lnv_jsonparser = create jsonparser

//url
ls_url = "https://my.arrow.com/api/security/oauth/token"

// headers
lnv_HttpClient.SetRequestHeader("client_id", "dezac")
lnv_HttpClient.SetRequestHeader("Content-Type", "application/json;charset=UTF-8")

// user/password / basic auth
ls_User = "dezac"
ls_PassWord = "------------------------------------------------------"
li_rc=lnv_HttpClient.SetCredentials(False, 0, ls_user, ls_PassWord)
if li_rc<>SUCCESS then
	messagebox ("Atención", "Error set credentials")
	destroy lnv_httpClient
	destroy lnv_jsonParser
	return
end if

// data
ls_data = '{"grant_type":"client_credentials"}'

//Get the JSON string via httpclient
li_rc = lnv_httpclient.sendrequest("POST", ls_url, ls_data)
if li_rc <> SUCCESS then
	messagebox("Atención","SendRequest Failed:"+lnv_httpclient.getresponsestatustext( ))
	destroy lnv_httpClient
	destroy lnv_jsonParser
	return
end if

// get response
lnv_httpclient.getresponsebody( ls_json)

// get status code
ll_status=lnv_HttpClient.GetResponseStatusCode()
if ll_status <> 200 then
	messageBox ("Atención", "status error: " + string (ll_status))
	destroy lnv_httpClient
	destroy lnv_jsonParser
	return
end if	

//Loads the JSON data via jsonpaser
ls_error = lnv_jsonparser.loadstring(ls_json)
if len(trim(ls_error))  > 0 then
	Messagebox("Failed","Load json failed:"+ls_error)
	destroy lnv_httpClient
	destroy lnv_jsonParser
	return
end if

//Obtains the handle of root item
ll_root = lnv_jsonparser.getrootitem( )

//Obtains the each row in a loop
for ll_index = 1 to lnv_jsonparser.getchildcount(ll_root)

	// Obtains token
	ls_token = lnv_jsonparser.getchildkey(ll_root, ll_index)
	
next	
	
destroy lnv_httpClient
destroy lnv_jsonParser
