cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to learn some quick and useful tips to make your day easier? Check out how Calvin uses Replay to get feedback from other teams at Dropbox 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?