cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to know what we learned at IBC? Check out our learnings on media, remote working and more right here.

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Dropbox Api throwing error, "request body: could not decode input as JSON"

Dropbox Api throwing error, "request body: could not decode input as JSON"

Shobhit_Sharma
New member | Level 2
Go to solution

Whenever I use https://api.dropboxapi.com/2/sharing/get_file_metadata  with apex code or postman, I receive an error message i.e., Error in call to API function "sharing/get_file_metadata": request body: could not decode input as JSON 

My apex code is as follows:

string token = 'https://api.dropboxapi.com/2/sharing/get_file_metadata';
HttpRequest r = new HttpRequest();
r.setEndpoint(token);
r.setHeader('Authorization','Bearer ' +accesstoken);
r.setHeader('Content-Type','application/json');
r.setHeader('data','{ "file" : "id:ooT7g_X2tkAAAAAAAAAAEw" ,"actions" : [] }');
        
r.setMethod('POST');
r.setTimeout(60000);        
Http h1 = new Http();
HttpResponse res1 = h1.send(r);
string resp1 = res1.getBody();
System.debug('MetaData Status :: \n' + resp1);
1 Accepted Solution

Accepted Solutions

Greg-DB
Dropbox Staff
Go to solution

It looks like you're sending the API parameters in a header with the name "data" in this line:

 

r.setHeader('data','{ "file" : "id:ooT7g_X2tkAAAAAAAAAAEw" ,"actions" : [] }');

The /2/sharing/get_file_metadata endpoint is an "RPC" style endpoint, so the parameters should be sent as JSON in the request body, not as a header. Update your code to send the JSON in the body instead of a header.

I can't offer help with programming in Apex itself, but it looks like you may need to use the `setBody` method.

 

View solution in original post

1 Reply 1

Greg-DB
Dropbox Staff
Go to solution

It looks like you're sending the API parameters in a header with the name "data" in this line:

 

r.setHeader('data','{ "file" : "id:ooT7g_X2tkAAAAAAAAAAEw" ,"actions" : [] }');

The /2/sharing/get_file_metadata endpoint is an "RPC" style endpoint, so the parameters should be sent as JSON in the request body, not as a header. Update your code to send the JSON in the body instead of a header.

I can't offer help with programming in Apex itself, but it looks like you may need to use the `setBody` method.

 

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    Greg-DB Dropbox Staff
What do Dropbox user levels mean?