You might see that the Dropbox Community team have been busy working on some major updates to the Community itself! So, here is some info on what’s changed, what’s staying the same and what you can expect from the Dropbox Community overall.
Forum Discussion
deebee_it
6 years agoHelpful | Level 5
Error in call to API function "files/list_folder": request body: could not decode input as JSON
Good morning,
I do this request with Arduino:
client.print(String("POST /2/files/list_folder HTTP/1.1\r\n") +
"Host: api.dropboxapi.com" +
"User-Agent: ESP8266/Arduino_YAGI\r\n" +
"Authorization: Bearer " + (String)my_token +"\r\n" +
"Accept: */*"+
"Content-Type: application/json" +
"Content-Length: 33" + "\r\n" + "\r\n" +
"Dropbox-API-Arg: {\"path\":\"/glucose/201901/09/15/\"}"
);
so, the arg is:
Dropbox-API-Arg: {"path":"/glucose/201901/09/15/"}
The 'client' variable is:
WiFiClientSecure client;
where 'WiFiClientSecure' is a package of the library to do secure calls.
But I receive this error:
HTTP/1.1 400 Bad Request
Server: nginx
Date: Thu, 10 Jan 2019 09:53:23 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Content-Security-Policy: sandbox; frame-ancestors 'none'
X-Dropbox-Request-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename='error'
5f
Error in call to API function "files/list_folder": request body: could not decode input as JSON
Any idea to resolve this error?
Thank you very much in advance!
FOUND!
I used static IP:162.125.5.7to access the server.
Probably Drobbox changed the IP a few days ago.
Now I switched to
api.dropboxapi.comand everything works like a charm.Thank you for the support! :)
- Greg-DBDropbox Staff
The /2/files/list_folder endpoint is an "RPC"-style endpoint, meaning it expects the parameters in the request body (not in a request header).
Please move your parameters to the request body instead of the "Dropbox-API-Arg" header and try again. (The "Dropbox-API-Arg" header is only used for content-upload and content-download -style endpoints.)
- deebee_itHelpful | Level 5
Good morning.
I go right with this call for about 1 year:
request = String("POST /2/files/list_folder HTTP/1.1") + "\r\n" + "Host: api.dropboxapi.com" + "\r\n" + "User-Agent: ESP8266/Arduino_blabla"\r\n" + "Authorization: Bearer MYTOKENxxxxx\r\n" + "Accept: */*" + "\r\n" + "Content-Type: application/json; charset=utf-8" + "\r\n" + "Content-Length: " + request_data.length() + "\r\n\r\n" + request_data ;
With this request_data:request_data = "{\"path\":\"" + MYPATH+ "\"}";
Now, days ago I started getting this error:
Error (4xx)We can't find the page you're looking for.
So, probably some logic is changed serverside...
May you please tell me what do I need to change in my API call?
Thank you.- ЗдравкоLegendary | Level 20
Hi deebee_it,
You haven't mentioned what is the exact "MYPATH".
First: Are you sure the path, you are referring to, exists?
Second: You are relying on utf-8 encoding. Take in mind that Dropbox interpret all JSON input as a ASCII string, the encoding set is ignored! If you are using some simbol(s) outside ASCII set, make sure they are JSON-encoded (\uXXXX, where XXXX is hexdecimal unicode code point).
PS: By the way, you have put in your expression too many, meaningless string additions. Better do some of them join to each other (for example: "Host: api.dropboxapi.com" + "\r\n" could become "Host: api.dropboxapi.com\r\n") and remove the pluses between literals string on different lines (they gonna concatente to each other at compile time). Use pluses only where needed. 😉 In such a way lot of resources gonna be saved and the application speeds up.
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
5,910 PostsLatest Activity: 3 days agoIf you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!