We're making changes to the Community, so you may have received some notifications - thanks for your patience and welcome back. Learn more here.
Forum Discussion
simotin13
5 months agoHelpful | Level 5
/files/download API fails
Hi, I'm using Dropbox API and found /files/download API fails since few days before. The API return following response body, <!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" conten...
- 5 months ago
As Здравко mentioned, please make sure you're encoding header values as documented here: https://www.dropbox.com/developers/reference/json-encoding
Greg-DB
Dropbox Staff
Nico-Uretek If you're still seeing an issue when applying the encoding as documented, please share the specific steps, code, and parameter value(s) needed to reproduce the issue you're seeing so we can look into it. Be sure to redact any access/refresh tokens though. Thanks!
Nico-Uretek
5 months agoHelpful | Level 5
Greg-DB Yes I still got the problems.
I'm using Dropbox on Salesforce and using two way to upload files (both didn't works since yesterday)
- by using the official dropbox package "Dropbox for Salesforce" (apiName "Dropbox_for_SF") version 1.704
- by using a custom code in apex (like java) that create an http request on the
https://content.dropboxapi.com/2/files/upload with this code :
HttpRequest req = new HttpRequest();
req.setMethod('POST');
String auth = 'Bearer '+tk;
String content = 'application/octet-stream';
String dbApiArg = '{\"path\": \"'+path+'/'+ a.name.replace('(xxx)','+') +'\",\"mode\": \"overwrite\",\"autorename\": true,\"mute\": false}';
Blob blobBodyValue = a.body;
req.setHeader('Authorization', auth);
req.setHeader('Content-Type', content);
req.setHeader('Dropbox-API-Arg', dbApiArg);
req.setBodyAsBlob(blobBodyValue);
Http http = new Http();
HTTPResponse res = http.send(req);
The fact is that my code and the package was working since year and no modifications has been dones ! Other Api like list_folder or download still working. All my organization have this issue.
I've test multiples times the upload api and without accents/special characters its work fine. But the management of the files is full automatised so we can't modify the file name to remove problematic characters....
- Здравко5 months agoLegendary | Level 20
Nico-Uretek wrote:... Yes i'm using (french) accents and just the - characters in my name files and it would take a lot of time and devs to remove all of them...
No, no, this is not and cannot be an issue - it's not a surrogate pair! There is something else though:
Nico-Uretek wrote:...
String dbApiArg = '{\"path\": \"'+path+'/'+ a.name.replace('(xxx)','+') +'\",\"mode\": \"overwrite\",\"autorename\": true,\"mute\": false}';...req.setHeader('Dropbox-API-Arg', dbApiArg);...Where is your string encoding above? 🤔 I cannot see it! That's what makes your issues. 😉
Hope this helps.
PS: Missing of any try for encoding (including for such symbols that have to be encoded not only according Dropbox, but mandatory according applicable standards) makes your code instable or even vulnerable - the JSON object may become restructured by just "appropriate" path/file!!!
- Greg-DB5 months agoDropbox Staff
Nico-Uretek I don't actually see any encoding being done on your header values in your code. Please make sure you have the encoding implemented as covered here.
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
5,875 PostsLatest Activity: 2 months 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!