2016-09-11 6 views
0

У меня есть OneDrive & Google Drive успешно обрабатывает загруженные файлы, однако Dropbox дает мне печаль, потому что я не могу получить правильный путь HTTP-запроса к файлу.Путь обращения к URL-адресу Dropbox в файл C#

Я не специалист по отдыху url &, возможно, кто-то может указать мне в правильном направлении для приемлемого формата запроса Dropbox для последнего UWP SDK.

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); 
} 

Я прочитал документы на Dropbox, и не ясно, на форматирование для меня, и я не мог найти четкий пример в любом месте.

Еще раз спасибо!

+0

Вы проверили этот документ https://www.dropbox.com/developers/documentation/dotnet#tutorial? – Oluwafemi

+0

Я видел это, я хочу, чтобы скачать бросил из-за ограничений памяти, я хочу сделать это http-способом. Я считаю, что v1 поддерживает только загрузку. Спасибо – Sixjac

+0

Dropbox API v2 поддерживает запросы поиска диапазона на конечных точках загрузки контента: https://www.dropbox.com/developers/documentation/http/documentation#formats, такие как https://www.dropbox.com/developers/documentation/http/documentation # files-download – Greg

ответ

0

В соответствии с вашим кодом проблема здесь в вашем заголовке авторизации. Для Dropbox API, правильный заголовок авторизации хотел следующее:

Authorization: Bearer <access token> 

Таким образом, мы должны изменить httpRequest.Headers.Authorization к

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

Тогда ваш код должен быть Albe работать. Например, с помощью файла file.mp3 в папке temp.
enter image description here

Код может понравиться:

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

Привет Jay Zuo, отладка показывает, что авторизация в порядке, ошибка, которую я получаю, находится в HttpResponseMessgae, который «404 Not Found», так что это должно означать, что путь к файлу неверен. Мне нужно найти пример пути, делающего то же самое. Спасибо – Sixjac

+0

@SeanRyan Где находится файл, который вы хотите получить? Например, используя «Начало работы с Dropbox.pdf» в корневой папке, URL-адрес должен быть «https://content.dropboxapi.com/1/files/auto/Get Started with Dropbox.pdf». Кроме того, вам может понадобиться URI кодировать путь в URL-адресе, например: 'string url =" https://content.dropboxapi.com/1/files/auto "+ Uri.EscapeDataString (uri);'. –

+0

Jay Zuo, это должно быть «https://content.dropboxapi.com/1/files/auto/temp/file.mp3». Я попробую URL-кодирование пути и ответ позже. Спасибо – Sixjac

 Смежные вопросы

  • Нет связанных вопросов^_^