• 0
Ufomaster

DropBox Rest

Вопросы

У кого есть рабочий пример получения бинарного файла из дроб бокса ?  REST;  Текстовый принимает, а бинарный нет. Помогите. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 ответов на этот вопрос

  • 0

как убрать перекодировку в  header "Authorization": "Bearer%20******************************

? что бы пробел оставался пробелом 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
33 минуты назад, Ufomaster сказал:

как убрать перекодировку в  header "Authorization": "Bearer%20******************************

? что бы пробел оставался пробелом 

%20 это и есть пробел, веб серверы его примут правильно.

Но если это мешает, то можно через Replace заменить %20 на пробел

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
10 минут назад, ZuBy сказал:

%20 это и есть пробел, веб серверы его примут правильно.

Но если это мешает, то можно через Replace заменить %20 на пробел

Передаю

 RESTRequest1.Params.AddHeader('Authorization', 'Bearer Zjjt*******************************');

 RESTRequest1.Execute;

Как сделать что бы пробел остался пробелом ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 минуты назад, Ufomaster сказал:

Передаю

 RESTRequest1.Params.AddHeader('Authorization', 'Bearer Zjjt*******************************');

 RESTRequest1.Execute;

Как сделать что бы пробел остался пробелом ?

ну не положено отправлять на сервер пробел, для этого все параметры проходят через UrlEncode

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
39 минут назад, ZuBy сказал:

ну не положено отправлять на сервер пробел, для этого все параметры проходят через UrlEncode

что это за ошибка помогите ? 

First chance exception at $753436EA. Exception class EEncodingError with message 'No mapping for the Unicode character exists in the target multi-byte code page'. Process Project1.exe (5996)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

приходит кодировка которую не ждут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, ZuBy сказал:

приходит кодировка которую не ждут

А какую нужно ? для дроп бокса

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Всем спасибо. Глюк в берлине без апдейта. В сиетле все работает отлично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 29.11.2016 в 23:46, Ufomaster сказал:

Глюк в берлине без апдейта. В сиетле все работает отлично.

Это не решение вопроса...

Поделитесь кодом, пожалуйста, возможно проблему удастся решить другим способом. Помимо смены версии IDE.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 01.12.2016 в 17:03, kami сказал:

Это не решение вопроса...

Поделитесь кодом, пожалуйста, возможно проблему удастся решить другим способом. Помимо смены версии IDE.

procedure TForm1.Button1Click(Sender: TObject);
var
  SomeStream : TMemoryStream;

begin

  RESTRequest1.Method:=TRESTRequestMethod.rmGET;
  RESTClient1.BaseURL:='https://content.dropboxapi.com/2/files/download';

  with RESTRequest1.Params.AddItem do begin
    name := 'Authorization';
    Value := 'Bearer Z*************************'; // настоящий токен
    ContentType := ctNone;
    Kind := pkHTTPHEADER;
    Options := [poDoNotEncode];
  end;

   with RESTRequest1.Params.AddItem do begin
    name := 'Dropbox-API-Arg';
    Value := '{"path": "/имя файла на боксе"}';
    ContentType := ctNone;
    Kind := pkHTTPHEADER;
    Options := [poDoNotEncode];
  end;

  RESTRequest1.Execute; 

  SomeStream := tmemorystream.Create;
              try
                Somestream.WriteData(RESTResponse1.RawBytes,Length(RESTResponse1.RawBytes));
                SomeStream.SaveToFile('dowloaded.file');
              finally
                SomeStream.free;
              end;


end;
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1

на например можно вот так

2016-12-06_21-00-39.png

DropBox_test.rar

UPDATE: Там не используется TRest** компоненты, я их не люблю. Поэтому написал по своему.

В мемо показана картинка, другого ничего не было на дропбоксе, думаю разберетесь в коде

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Rionn
      В этой ссылке показан пример работы в одной сети (написано курсивом). Не могу найти, чтобы PC работал по сети или по WiFi, а телефон по мобильным данным. Не подскажете?
    • От notricky
      Возникает вышеозначенная ошибка при попытке декодировать приходящий от сервера текст.
      Я пробовал в различных вариантах.
      http://www.fmxexpress.com/secure-your-rest-client-with-ssl-and-gzip-compression-in-delphi-xe8-firemonkey-on-android-and-ios/
      http://www.fmxexpress.com/decode-gzip-content-from-the-rest-client-in-delphi-xe7-firemonkey-on-android-and-ios/  
       
      Я получаю либо  ошибку из названия темы, либо  Error on call to ZLib library function inflateInit2_

      В общем не работает только на iOS (iPhone).
      На Android, Windows, MacOS работает корректно декомпрессия в автоматическом режиме, потому вопроса о строках не возникает.
    • От notricky
      Собственно есть способ получать и распаковывать данные, полученные в GZIP.
      В качестве примера:
      procedure TFMain.FormCreate(Sender: TObject); begin (ReqGet.Client.HTTPClient.Peer.GetObject as TIdCustomHTTP).Compressor := TIdCompressorZLib.Create(ReqGet.Client.HTTPClient.Peer.GetObject as TIdCustomHTTP); ReqGet.AcceptEncoding := 'gzip,deflate'; ... end; А вот как их отправить (как запаковать - механизм? и куда подставить строку) - не понятно.
      Отправка интересует и POST и GET
      Прошу помощи.
    • От Равиль Зарипов (ZuBy)
      Доброго времени суток!
      Навеяно этой темой.
      Посмотрел реализацию от @Pax Beach (за что ему спасибо большое) и столкнулся с тем что TRESTClient со всеми потрахами это просто дикий ужас.
      Решил собрать аналогичный пример, только не использовать TREST***
      немного опишу, свою реализацию
      uAppSettings.pas - хранит описание вашего приложения созданного в ВК  FMX.RESTLight.pas - модуль "общения" клиента с сервером FMX.RESTLight.Types.pas - тут хранятся типы для работы TRESTLight Приведу код, который постит Вам на стену текст
      var aFields: TArray<TmyRestParam>; aJSON: string; begin SetLength(aFields, 5); aFields[0] := TmyRestParam.Create('access_token', FAuthToken.token, false); aFields[1] := TmyRestParam.Create('v', FVKApp.APIVersion, false); aFields[2] := TmyRestParam.Create('owner_id', FAuthToken.user_id, false); aFields[3] := TmyRestParam.Create('friends_only', '0', false); aFields[4] := TmyRestParam.Create('message', 'Тестовое сообщение <RESTLight>', false); TTask.Run( procedure begin aJSON := TRESTLight.Execute('wall.post', FVKApp, aFields); TThread.Synchronize(TThread.CurrentThread, procedure begin Memo1.Lines.Add('---- wall.post ----'); Memo1.Lines.Add(aJSON); end); end); а вот так можно заливать файлы
      var aFields: TArray<TmyRestParam>; aJSON: string; begin SetLength(aFields, 4); aFields[0] := TmyRestParam.Create('access_token', FAuthToken.token, false); aFields[1] := TmyRestParam.Create('v', FVKApp.APIVersion, false); aFields[2] := TmyRestParam.Create('owner_id', FAuthToken.user_id, false); aFields[3] := TmyRestParam.Create('photo', aUploadFile, true); // для файлов указывается !!!true!!! TTask.Run( procedure begin // для загрузки файлов использовать TRESTLight.Execute2, в нем можно указать произвольный URL aJSON := TRESTLight.Execute2(aUploadURL, FVKApp, aFields); TThread.Synchronize(TThread.CurrentThread, procedure begin Memo1.Lines.Add('---- upload file to server ----'); Memo1.Lines.Add(aJSON); end); end); P.S. На правильность и оригинальность не претендую, просто альтернативный вариант. Мне например не понравилась как устроен TRESTClient, много компонентов лишних. В боевых условиях наверное код еще будет модернизироваться, я рассмотрел только пару методов, но думаю общая концепция не сильно поменяется
      GitHub   TRESTLight.zip
    • От SergeyIT
      Что то нелепое. Помогите, плиз, разобраться.
      Ничего не кроме формы.
      Любой вызов
      client:= TRESTClient.Create('http://www.google.com'); с любым адресом приводит к появлению

    • От Syb
      Я могу совсем что то не правильно делать, хочу получить данные согласно API :
       
       
      http://glonasssoft.ru/wiki/?wiki_name=API
      var jValue:TJSONValue; s,s1:string; begin RestClient1.BaseURL:='http://dev.glonasssoft.ru/auth/login'; Restrequest1.Execute; jValue:=RESTResponse1.JSONValue; s:=jValue.ToString; s1:= copy(s,pos('AuthID:"',s)+11,pos('","U',s)-pos('AuthID:"',s)-11);//достал ключ RestClient2.BaseURL:='http://dev.glonasssoft.ru/vehicles_'; Restrequest2.Params[0].Value:=s1; -здесь параметр типа HttpHeader задан X-Auth в него сую ключ Restrequest2.Execute; - говорит не авторезирован jValue:=RESTResponse2.JSONValue; s:=jValue.ToString; что я не так делаю?
    • От Dozent
      Добрый день!
      Прошу помощи.
      Работая с VCL для набора данных использую TDataSet, какой аналог есть в FMX.
       
      Поясню подробнее:
       
      У меня есть сервер на PHP обращаясь к которому я получаю ответ в JSON
      {"field_names":["ID","VNAME","VPASSWORD","RROLE","VDESCRIPTION","VNAMEE","USERROLE"],"data":[[1,"\u0418\u0432\u0430\u043d\u043e\u0432 \u0418.\u0418.","123",1,"\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f.","\u0418\u0432\u0430\u043d\u043e\u0432 \u0418.\u0418.","\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c"]]} Это только по первому пользователю. Их как понимаете мб больше! Хочу результат ответа PHP скрипта засунуть в структуру! В VCL  эту роль хорошо выполняет TDataSet, какой аналог в FMX?
       
       
    • От estra
      Мне необходимо произвести некоторые действия в случае возникновения исключения Time Out в RESTRequest. Но событие OnHTTPProtocolError не возникает при исключениях, не связанных с HTTP:
       
      This event will not get fired if a non HTTP-related exception occurs during execution. This includes, but is not limited to timeout and server not found related exceptions.   Как выйти из ситуации и обработать Time Out? Наверное может помочь try except, но какого класса исключение нужно ловить, пока не нашел.
    • От Labian
      Всем привет!
      Возникла трудность при разработке приложения для iOS. Необходимо получить информацию о пользователе в VK методом "users.get"
       
      Использую REST для авторизации и запросов.
      При попытке выполнить запрос к https://api.vk.com/method/ возникает ошибка :
        First chance exception at $000178C8. Exception class EIdOSSLCouldNotLoadSSLLibrary with message 'Could not load SSL library.'
       
      Что нужно сделать чтоб работать с https на iOS?
       
      Delphi XE7 Update 1
       
       
       
    • От aleksandrguru
      RESTRequest непонятно можно настроить визуально только под один запрос??
       
      Нельзя было сделать чтобы параметры привязывались к поля resourse , 
       
      resourse1-параметры 
      resourse2-параметры
       
      и непонятно что делать когда rest не разбирает автоматом JSON визуально как делать тогда
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу