sending a JSON string

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

sending a JSON string

Geoff Canyon via use-livecode
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?searchHighlight=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
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: sending a JSON string

Geoff Canyon via use-livecode
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?searchHighlight=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
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: sending a JSON string

Geoff Canyon via use-livecode
In reply to this post by Geoff Canyon via use-livecode
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 <[hidden email]>
> To: How to use LiveCode <[hidden email]>
> Cc: Douglas Ruisaard <[hidden email]>
> Subject: Re: sending a JSON string
> Message-ID: <[hidden email]>
> 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?searchHigh
> > 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
> > [hidden email]
> > 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 <[hidden email]>
> To: How to use LiveCode <[hidden email]>
> Subject: Re: Navigator 6.6 alpha 1 is out
> Message-ID:
> <CAKCLKtrG=[hidden email]>
> 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
> [hidden email]
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
> ------------------------------
>
> End of use-livecode Digest, Vol 181, Issue 24
> *********************************************


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: sending a JSON string

Geoff Canyon via use-livecode
In reply to this post by Geoff Canyon via use-livecode
You can also try this:

set the httpheaders to "Content-Type: application/x-www-form-urlencoded"
delete
URL("https://api.thingspeak.com/channels/564256/feeds.json?api_key=EQKTUQQKVH83D1RE")



-----
---
Greg (pink) Miller
mad, pink and dangerous to code
--
Sent from: http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

RE: sending a JSON string

Geoff Canyon via use-livecode
In reply to this post by Geoff Canyon via use-livecode
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:[hidden email]]
> Sent: Wednesday, October 17, 2018 9:15 AM
> To: '[hidden email]'
> 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 <[hidden email]>
> > To: How to use LiveCode <[hidden email]>
> > Cc: Douglas Ruisaard <[hidden email]>
> > Subject: Re: sending a JSON string
> > Message-ID: <[hidden email]>
> > 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
> > > [hidden email]
> > > 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 <[hidden email]>
> > To: How to use LiveCode <[hidden email]>
> > Subject: Re: Navigator 6.6 alpha 1 is out
> > Message-ID:
> > <CAKCLKtrG=[hidden email]>
> > 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
> > [hidden email]
> > http://lists.runrev.com/mailman/listinfo/use-livecode
> >
> > ------------------------------
> >
> > End of use-livecode Digest, Vol 181, Issue 24
> > *********************************************


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

RE: sending a JSON string

Geoff Canyon via use-livecode
In reply to this post by Geoff Canyon via use-livecode
let me start by apologizing for my screw up... after looking even further into many more forum responses, I found that there is YET ANOTHER key used for a DELETE ... once I put that in Andre's code... guess what? .... it works perfectly!!!

So pat yourself on the back, Andre! and thanks ever so much!  Now onto the next challenge... "bulk" uploading a whole slew of data point at once.

Cheers
Doug

Douglas Ruisaard
Trilogy Software
(250) 573-3935


>
> Message: 4
> Date: Wed, 17 Oct 2018 09:14:38 -0700
> From: "Douglas Ruisaard" <[hidden email]>
> To: <[hidden email]>
> Subject: Re: sending a JSON string
> Message-ID: <125f01d46634$8249bc70$86dd3550$@net>
> Content-Type: text/plain; charset="us-ascii"
>
> 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 <[hidden email]>
> > To: How to use LiveCode <[hidden email]>
> > Cc: Douglas Ruisaard <[hidden email]>
> > Subject: Re: sending a JSON string
> > Message-ID: <[hidden email]>
> > 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
> > > [hidden email]
> > > Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> > > http://lists.runrev.com/mailman/listinfo/use-livecode
> >


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode