sending a JSON string

Douglas Ruisaard dougr at telus.net
Wed Oct 17 15:37:02 EDT 2018


It turns out that Andre's code works perfectly!  It's my fault that (eventually) I discovered there is yet-another authorization key used for Thingspeak API commands which is different from the READ and Write keys I was familiar with.  Once I put the correct key into Andre's code, it worked perfectly.

Hopefully others can benefit from Andre's brilliant assistance!

Douglas Ruisaard
Trilogy Software
(250) 573-3935


> -----Original Message-----
> From: Douglas Ruisaard [mailto:dougr at telus.net]
> Sent: Wednesday, October 17, 2018 9:15 AM
> To: 'use-livecode at lists.runrev.com'
> Subject: Re: sending a JSON string
> 
> Thanks very much, Andre!  I appreciate the assistance.  I am sure the two "keys" are correct as I use
> them in another portion of the application (an ESP8266 module which sends data to ThingSpeak).  A
> subsequent direct message from you mentioned "Charles Proxy" as an inspector for HTML messaging.
> THAT's a huge hint and I'll be installing it to see what exactly LC is sending.
> 
> The ThingSpeak community is very active and I'll submit a request for assistance to it.  I thought I'd
> start with this forum since it is very responsive and knowledgeable... Also my lack of good working
> understanding about LC's HTML and overall web features and functions left me thinking I was doing
> something wrong in LC.  With Andre's attempt generating a similar response to what I was getting, it
> helps vindicate my uncertainty about LC's ability to generate an appropriate message to ThingSpeak.
> 
> if I find a solution, I'll certainly let this board know.
> 
> In the meantime, if ANYONE has any other suggestions, I'd be extremely grateful!
> 
> Cheers
> Doug
> 
> Douglas Ruisaard
> Trilogy Software
> (250) 573-3935
> 
> >
> > Message: 3
> > Date: Wed, 17 Oct 2018 00:10:05 +0100
> > From: Andre Alves Garzia <andre at andregarzia.com>
> > To: How to use LiveCode <use-livecode at lists.runrev.com>
> > Cc: Douglas Ruisaard <dougr at telus.net>
> > Subject: Re: sending a JSON string
> > Message-ID: <41683bda-81ae-ac2e-1542-7d98f19ece82 at andregarzia.com>
> > Content-Type: text/plain; charset=utf-8; format=flowed
> >
> > Douglas,
> >
> > I am pasting some code I've built here that should do what you want
> > but when I try it, it returns a
> > 401 error which is an authentication error.
> > On that manual page you linked there is a notice about API keys and
> > Channel keys, so maybe the key on this email is not the correct one.
> > This is the code (and yes, it is dead ugly):
> >
> > *on*mouseup
> >
> > *local*tHeaders, tResult
> >
> > *put*emptyintofld"output"
> >
> > *put*"Content-Type: application/x-www-form-urlencoded"intotHeaders
> >
> > *put*libURLFormData("api_key", "EQKTUQQKVH83D1RE") intotFormData
> >
> > *put*tsNetCustomUpload("1",
> > "https://api.thingspeak.com/channels/564256/feeds.json", "DELETE",
> > tHeaders, "transferComplete",
> > tFormData) intotResult
> >
> > *end*mouseup
> >
> > *on*transferComplete pID, pResult, pBytes, pCurlCode
> >
> > *local*tData, tHeaders, tResult, rError
> >
> > *if* pCurlCode isnot0*then*
> >
> > *put*tsNetRetrError(pID) & crafterfld"output"
> >
> > *end* *if*
> >
> > *put*tsNetRetrData(pID, tError) intotData
> >
> > *put*"Server returned:"& tData & crafterfld"output"
> >
> > *put*"Headers"&& tsNetRetrSentHeaders("1", rError) & crafterfld"output"
> >
> > *put*tResult & cr& tHeaders & cr& pResult & cr& tData afterfld"output"
> >
> >  ?? tsNetCloseConn pID
> >
> > *end*transferComplete
> >
> >
> >
> > On 10/16/2018 9:12 PM, Douglas Ruisaard via use-livecode wrote:
> > > I'll start by apologizing for my abysmal familiarity with HTTP,
> > > JSON, and URL's ... I'm hoping
> > someone will have pity and give me a hand!
> > >
> > > I am trying to send a "command" to a ThingSpeak channel, which is
> > > very successfully receiving data
> > from a simple little ESP8266 module.  Periodically, I need to clear
> > the data from this channel.  I want to do so from LC.. NOT the
> > ESP8266.  I just can't seem to "coordinate" the instructions from the
> > ThingSpeak site to DELETE this data (not the channel, just the data within) with an LC function /
> code.
> > >
> > > The link to the ThingSpeak page I am referring to is:
> > > https://www.mathworks.com/help/thingspeak/clearchannel.html?searchHi
> > > gh
> > > light=delete%20channel%20data&s_tid=doc_srchtitle#d120e16923
> > >
> > > but in essence, I interpret the content to assert the following:
> > >
> > > Access the following URL:
> > > "https://api.thingspeak.com/channels/564256/feeds.json" where
> > > "564256" is
> > the channel I wish to clear.
> > >
> > > Send the JSON "command": "DELETE https://api.thingspeak.com/channels/564256/feeds.json
> > > 			       api_key= EQKTUQQKVH83D1RE"
> > >
> > > 				where "EQKTUQQKVH83D1RE" is my account api-key for writing to
> > > the ThingSpeak channel
> > >
> > > if successful, ThingSpeak responds with: "[]" ... an empty JSON
> > > array
> > >
> > >
> > > In LC, I've tried the following (and several variations):
> > >
> > > on mouseUp
> > >     put empty into field "Output"
> > >     put "https://api.thingspeak.com/channels/564256/feeds.json" into tUrl
> > >     put "DELETE https://api.thingspeak.com/channels/564256/feeds.xml"
> > > & return & "api_key=EQKTUQQKVH83D1RE" into JsonCmd
> > >
> > >     -- Send a HTTP DELETE request
> > >     put tsNetCustomSync(tUrl, JsonCmd, tHeader, tResponseHeaders,
> > > tResult, tBytes) into tData
> > >
> > >     -- If this is not the case, we will inform the user
> > >     put tResult into field "Output"
> > >
> > > end mouseUp
> > >
> > > I get a tResult of 0 (zero) ... but the data is NOT cleared.
> > >
> > > I have also tried the following:
> > >
> > > on mouseUp
> > >       put empty into field "Output"
> > >       put "https://api.thingspeak.com/channels/564256/feeds.json?api_key=EQKTUQQKVH83D1RE" into
> tUrl
> > >       put "DELETE
> > > https://api.thingspeak.com/channels/564256/feeds.json" & return &
> > > "api_key=EQKTUQQKVH83D1RE" into tMessage["text"]
> > >
> > >       put ArrayToJSON(tMessage) into tMessage
> > >
> > >       set the httpHeaders to "Content-type: application/json"
> > >
> > >       post tMessage to url tUrl
> > >
> > >       put it into field "Output"
> > >
> > > end mouseUp
> > >
> > > But that only "creates" a new entry in the channel with all of the data fields empty.
> > >
> > > I'm sure it's the way in which I am trying to send the "DELETE"
> > > command but I just can't see how to
> > do it correctly.
> > >
> > > I'd be grateful for any assistance.
> > >
> > >
> > > Douglas Ruisaard
> > > Trilogy Software
> > > (250) 573-3935
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > use-livecode mailing list
> > > use-livecode at lists.runrev.com
> > > Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> > > http://lists.runrev.com/mailman/listinfo/use-livecode
> >
> >
> > ------------------------------
> >
> > Message: 4
> > Date: Tue, 16 Oct 2018 20:22:13 -0700
> > From: Geoff Canyon <gcanyon at gmail.com>
> > To: How to use LiveCode <use-livecode at lists.runrev.com>
> > Subject: Re: Navigator 6.6 alpha 1 is out
> > Message-ID:
> > 	<CAKCLKtrG=bPqoKq4_p_M4h6r-CZ4iGee8mKQ-b5D_+2eDQpXgw at mail.gmail.com>
> > Content-Type: text/plain; charset="UTF-8"
> >
> > Updated to fix the Card List and Background List. Also noticed and
> > fixed a non-visual issue with the HTML being set in Navigator's List.
> >
> > >
> >
> >
> > ------------------------------
> >
> > Subject: Digest Footer
> >
> > _______________________________________________
> > use-livecode mailing list
> > use-livecode at lists.runrev.com
> > http://lists.runrev.com/mailman/listinfo/use-livecode
> >
> > ------------------------------
> >
> > End of use-livecode Digest, Vol 181, Issue 24
> > *********************************************





More information about the use-livecode mailing list