2016-09-11 4 views
0

Ich habe OneDrive & Google Drive erfolgreich Verarbeitung Chunked Download jedoch Dropbox gibt mir Trauer, weil ich nicht den richtigen HTTP-Anfrage Pfad zu der Datei bekommen kann.Dropbox Anfrage URL Pfad zur Datei C#

Ich bin kein Experte in Ruhe & Endpunkte, vielleicht jemand kann mich in die richtige Richtung für die akzeptable Dropbox-Anfrage-Format für die neueste UWP SDK zeigen.

using (var httpRequest = new HttpRequestMessage()) 
{ 
    string url = "https://content.dropboxapi.com/1/files/auto" + uri; 

    string accessKey = ApplicationData.Current.LocalSettings.Values[CommonData.dropboxAccessToken_Key].ToString(); 

    httpRequest.Method = HttpMethod.Get; 
    httpRequest.RequestUri = new Uri(url); 
    httpRequest.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", accessKey); 
} 

Ich habe docs auf Dropbox lesen, und es ist auf der Formatierung für mich nicht klar, auch konnte ich nicht ein klares Beispiel überall.

Danke nochmal!

+0

Haben Sie dieses doc überprüfen https://www.dropbox.com/developers/documentation/dotnet#tutorial? – Oluwafemi

+0

Ich sah, dass ich aufgrund Speicher Einschränkungen herunterladen möchte, möchte ich es tun, die http Ruhe. Ich glaube, dass v1 nur den Download unterstützt. Danke – Sixjac

+0

Dropbox API v2 unterstützt Bereich Retrieval-Anfragen auf Inhalt-Download-Endpunkte: https://www.dropbox.com/developers/documentation/http/documentation#formats wie https://www.dropbox.com/developers/documentation/http/documentation # files-download – Greg

Antwort

0

Nach Ihrem Code ist das Problem hier in Ihrem Autorisierungsheader. Für Dropbox API, das muss die richtige Autorisierungsheader folgende mag:

Authorization: Bearer <access token> 

Also sollten wir httpRequest.Headers.Authorization zu

httpRequest.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); 

Dann sollten Sie den Code sein albe ändern zu arbeiten. Verwenden Sie zum Beispiel "file.mp3" im Ordner "temp".
enter image description here

kann der Code wie:

var uri = "/temp/file.mp3"; 
using (var httpClient = new HttpClient()) 
{ 
    using (var httpRequest = new HttpRequestMessage()) 
    { 
     string url = "https://content.dropboxapi.com/1/files/auto" + Uri.EscapeDataString(uri); 

     httpRequest.Method = HttpMethod.Get; 
     httpRequest.RequestUri = new Uri(url); 
     httpRequest.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken); 

     var response = await httpClient.SendAsync(httpRequest); 

     if (response.IsSuccessStatusCode) 
     { 
      //TODO 
     } 
    } 
} 
+0

Hallo Jay Zuo, Debuggen zeigt Berechtigung ist in Ordnung, der Fehler, den ich bekomme, ist in der HttpResponseMessgae, die "404 Not Found" ist, so dass sollte bedeuten, dass der Pfad zu der Datei falsch ist. Ich muss ein Beispiel für einen Weg finden, der dasselbe tut. Danke – Sixjac

+0

@SeanRyan Wo ist die Datei, die Sie abrufen möchten? Wenn Sie beispielsweise "Get started with Dropbox.pdf" im Stammordner verwenden, sollte die URL "https://content.dropboxapi.com/1/files/auto/Get Started with Dropbox.pdf" lauten. Außerdem müssen Sie URI möglicherweise den Pfad in der URL wie folgt codieren: 'string url =" https://content.dropboxapi.com/1/files/auto "+ Uri.EscapeDataString (uri);'. –

+0

Jay Zuo, sollte es sein "https://content.dropboxapi.com/1/files/auto/temp/file.mp3" Ich werde versuchen URL-Codierung des Pfades und später antworten. Danke – Sixjac