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

Forum Discussion

Anoop_Brijmohun's avatar
Anoop_Brijmohun
Helpful | Level 6
7 years ago

Content-Type setting for downloading using dropbox api v2

Good-day, 

im busy trying to write a simple app to download files from dropbox.

im a newbie to mobile dev and asistance would be appricated.

 

im am receiving this error when downloading.

Dropbox.Api.BadInputException: Error in call to API function "files/download": Bad HTTP "Content-Type" header: "application/x-www-form-urlencoded".
 Expecting one of "text/plain", "text/plain; charset=utf-8", "application/octet-stream", "application/octet-stream; charset=utf-8".

 

 var aHttpClient = new HttpClient();
                aHttpClient.DefaultRequestHeaders.Add("Content-Type", "application/octet-stream; charset=utf-8");
                var aDorpboxConfig = new DropboxClientConfig("ApplicationName") { HttpClient = aHttpClient };

                
                using (var dbx = new DropboxClient("Key_Here", aDorpboxConfig))
                {
                    
                    Dropbox.Api.Files.DownloadArg dargs = new Dropbox.Api.Files.DownloadArg(content.Path + "/" + content.Name) ;

                                  

                    using (var response = await dbx.Files.DownloadAsync(dargs))
                    {
                        var file = await response.GetContentAsStringAsync();
                       
                    }
                }
  • There does not appear to be a need for a custom HTTP client in the sample code you have provided.  Is the custom HTTP client necessary, or can your code function without one?

    The .NET SDK does not require a custom HTTP client in order to function, nor do you need to explicitly set the Content-Type header.  Our .NET SDK will automatically create an HTTP client and set the appropriate headers for each API.

    • Anoop_Brijmohun's avatar
      Anoop_Brijmohun
      Helpful | Level 6
      Hi Robert, the reason I'm trying to add in the HTTP header is due to the "Bad HTTP content-type" message I am receiving... hence I thought I needed to specify one...

      Any ideas or even a sample code extract I could try of one that works

      Thanks
      • DBX_Robert's avatar
        DBX_Robert
        Icon for Dropbox Staff rankDropbox Staff

        I am able to run the following C# sample from our .NET tutorials page.  It assumes a file named "file.txt" in the root folder of your Dropbox account.

         

        using System;
        using System.Threading.Tasks;
        using Dropbox.Api;
        
        namespace sampleApp
        {
            class Program
            {
                static void Main(string[] args)
                {
                    var task = Task.Run((Func<Task>)Program.Run);
                    task.Wait();
                }
        
                static async Task Run()
                {
                    using (var dbx = new DropboxClient("<OAuth Token>"))
                    {
                        using (var response = await dbx.Files.DownloadAsync("/file.txt"))
                        {
                            Console.WriteLine(await response.GetContentAsStringAsync());
                        }
                    }
                }
            }
        }

         

        If you are doing this on mobile, are you using a framework like Xamarin?