We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.

Forum Discussion

deebee_it's avatar
deebee_it
Helpful | Level 5
6 years ago

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.7 

    to access the server.

     

    Probably Drobbox changed the IP a few days ago.

    Now I switched to 

    api.dropboxapi.com
    and everything works like a charm.
     
    Thank you for the support! :)
  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Staff rankDropbox 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_it's avatar
      deebee_it
      Helpful | 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.
       
      • Здравко's avatar
        Здравко
        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.