RESTful PUT error

andrew at midwestcoastmedia.com andrew at midwestcoastmedia.com
Fri Dec 29 10:31:44 EST 2017


Thanks for the feedback on proper headers! I looked again at the  
PipeDrive API  
[https://developers.pipedrive.com/docs/api/v1/#!/Persons/put_persons_id] in  
more detail and noticed that the Phone I was trying to change was  
actually looking for an array rather than a number or string so I  
thought I would try making a smaller change first. Name is a string so  
it should be easier to get a proof of concept with (or so I thought).

This is the sample test I'm doing in LiveCode (9dp11):
    Put random(999) into tID
    Put  
"https://api.pipedrive.com/v1/persons/3?api_token=ce95ed7f11e167194b0b4a6f6f1032df4fa13792" into  
tRequestURL
    Put "Content-Type: application/json" &lf& "Accept:  
application/json" into tHeaders
    Put "Homer Simpson" into tArray["name"]
    Put ArrayToJSON(tArray) into tJSONtoUpload
    put tsNetPost(tID, tRequestURL, tHeaders, tJSONtoUpload,  
"updateWasCompleted") into tResult

But I end up getting this returned:
{"status":false,"error":"Unknown method ."}

So I tried sending the command as FORM data:
    put "Homer Simpson" into tName
    put "Accept: application/json" into tHeaders
    set the httpHeaders to tHeaders
    put  
"https://api.pipedrive.com/v1/persons/3?api_token=ce95ed7f11e167194b0b4a6f6f1032df4fa13792" into  
tRequestURL
    get libURLFormData("name", tName)
    put it into url tRequestURL

But I didn't get a response from the server via "it" or "the result"  
so I had to manually verify the data. What I discovered was that the  
Name was successfully updated! So my issue seems to be my header  
announcing to the server what format I am sending data in. A response  
from the server would be nice, but I can always do some error checking  
to verify myself. I didn't see a tsNet command for PUT, but I could be  
mistaken.

The API doc says an "update" must be done as PUT but a "create new" be  
done as POST. After lots of trial & error it seems that I am able to  
POST JSON, but can't PUT JSON. And I'm able to PUT FORM data, but  
can't POST FORM data. Still not sure why one format doesn't work both  
places, but happy that I cracked this and will be able to upsell a  
client on an integration to my existing product with them!

--Andrew Bell





More information about the Use-livecode mailing list