Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372

Работа с Dropbox через HTTP (GET/POST)

27.02.2016, 14:07. Показов 4282. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: работать с Dropbox(скачивать/закачивать файлы) через Dropbox API с помощью HTTP запросов. Я знаю что есть библиотеки Dropbox API для .NET, но сейчас речь не об этом.
Как через стандартные классы .NET отправлять HTTP запросы GET/POST на примере Dropbox?

Вот тут приведен список команд: https://www.dropbox.com/develo... umentation
Есть подробное описание для каждой, в каком формате отправлять и что в итоге получать.
Как отправлять и получать результаты запросов в .NET я прогуглил(https://msdn.microsoft.com/en-... 10%29.aspx), но не смог применить на практике в контексте Dropbox.

Помогите разобраться на примере простого запроса: https://www.dropbox.com/develo... pace_usage
URL я вижу, acces token у меня есть, дальше что?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2016, 14:07
Ответы с готовыми решениями:

Работа с GET(POST) запросом по протоколу http
Проблема следующая: на C# создан http сервер, к нему подключаются клиенты, но пока кроме вывода строки It Works у него нет более...

Русский Post запрос в базу через http
Кто в курсе этого метода связи с БД на удаленном сервере, как через POST отправить переменные с русскими буквами? Английский воспринимает...

Как отправлять через HTTP POST? ESP32
Всем привет. Никак не разберусь, как отправлять через HTTP POST изображение кодированное через base64 Кодирую изображение через base64:...

9
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
27.02.2016, 16:52
Constantius24, Если я правильно понял, тебе нужно отправить запрос на
Code
1
https://api.dropboxapi.com/2/users/get_space_usage
И добавить хедер
Code
1
"Authorization: Bearer <get access token>"
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
27.02.2016, 22:15  [ТС]
Да именно так, где <get access token> я подставлю свое значение.

Добавлено через 30 минут
В документации все примеры приведены с использованием утилиты curl. Вбил в гугл "curl c# analog" и по первой же ссылке нашел возможное решение: http://stackoverflow.com/quest... rl-command
Попытался адаптировать под себя:
C#
1
2
3
4
5
6
7
8
9
        var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.dropboxapi.com/2/users/get_space_usage");
        httpWebRequest.Method = "POST";
        httpWebRequest.Headers.Add("Authorization", accessToken);
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
 
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            Console.WriteLine(streamReader.ReadToEnd()); 
        }
Словил WebException:
Удаленный сервер возвратил ошибку: (400) Недопустимый запрос.
0
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
27.02.2016, 22:39
Цитата Сообщение от Constantius24 Посмотреть сообщение
Я знаю что есть библиотеки Dropbox API для .NET, но сейчас речь не об этом.
Как через стандартные классы .NET отправлять HTTP запросы GET/POST на примере Dropbox?
Можешь скачать исходные коды и поискать, как там запросы отсылаются
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
27.02.2016, 22:52
Цитата Сообщение от Constantius24 Посмотреть сообщение
Удаленный сервер возвратил ошибку: (400) Недопустимый запрос.
попробуйте установить хэдер User-Agent в запросе и повторить.
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
27.02.2016, 22:58  [ТС]
IamRain, что вы имели ввиду?
Если так, то не работает:
C#
1
httpWebRequest.Headers.Add("User", "Agent");
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
27.02.2016, 23:00
Не так, а вот, скажем, так:
C#
1
2
 var req = (HttpWebRequest)WebRequest.Create(...);
 req.UserAgent = "MyUserAgent";
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
27.02.2016, 23:11  [ТС]
Ну а какое значение использовать для этого свойства?
Задал имя пользователя моего аккаунта Dropbox - не работает.
К тому же поиск по странице с документацией "user agent" не дал результатов.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
27.02.2016, 23:20
Цитата Сообщение от Constantius24 Посмотреть сообщение
Задал имя пользователя моего аккаунта Dropbox - не работает.
UserAgent - это просто идентификатор вашего браузера, или, в общем случае, объекта, выполняющего запросы.
Технически, можно обмануть, указав UserAgent любого из известных браузеров.
Из спецификации:
The User-Agent request-header field contains information about the user agent originating the request. This is for statistical purposes, the tracing of protocol violations, and automated recognition of user agents for the sake of tailoring responses to avoid particular user agent limitations. User agents SHOULD include this field with requests. The field can contain multiple product tokens (section 3.8) and comments identifying the agent and any subproducts which form a significant part of the user agent. By convention, the product tokens are listed in order of their significance for identifying the application.
Допустим, можно имитировать браузер Chrome и другие. F12 в любом браузере -> вкладка "Console" - >Вводите window.navigator.userAgent. Полученную строку устанавливаете в UserAgent свойство.
C#
1
2
var req = (HttpWebRequest)WebRequest.Create(...);
 req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36";
Если не сработает, то, видимо, не в этом причина.
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
27.02.2016, 23:37  [ТС]
Вот такой код сработал:
C#
1
2
3
4
5
6
7
8
9
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.dropboxapi.com/2/users/get_current_account");
        httpWebRequest.Method = "POST";
        httpWebRequest.Headers.Add("Authorization: Bearer " + accessToken);
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
 
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            Console.WriteLine(streamReader.ReadToEnd()); 
        }
Основное изменение, это указание заголовка авторизации, я до этого делал бред какой-то.
Ответ успешно получен и выведен на экран.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.02.2016, 23:37
Помогаю со студенческими работами здесь

Как передать переменные через http.Send (post запрос)
Здравствуйте уважаемые форумчане! Имеется макрос для передачи данных в php скрипт, сейчас передаются постоянные данные, которые прописаны...

До сих пор разбираюсь с передачей через HTTP POST (ESP32)
Тыкаю, тыкаю и никак не пойму, почему ничего не передается? Вот сама передача через HTTP POST if (camClient.connect(postHost,...

Посылка данных на чужой сервер через http post - проблема
Привет! Есть вот такой код: URL url = new URL(hostString); HttpURLConnection urlConnector =...

http server,http сервер, post
Необходимо реализовать функцию post для http сервера Косяк как принимать сообщение отправленное - вот этой формой и сам сервер При...

Работа торрента через http
Доброго времени суток. Интересует такой вопрос: можно ли при одном открытом TCP порте использовать каким-либо образом torrent-протокол? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru