Перейти к содержанию
Fire Monkey от А до Я

notricky

Пользователи
  • Постов

    86
  • Зарегистрирован

  • Посещение

Весь контент notricky

  1. Собственно поступаю я так - передаю по ссылке в процедуру reqReceiveData. procedure TFMain.reqReceiveData(const Sender: TObject; AContentLength, AReadCount: Int64; var Abort: Boolean); begin if not PgbUpdate.Visible then PgbUpdate.Visible := true; PgbUpdate.Max := AContentLength; PgbUpdate.Value := AReadCount; end; Внутри процедуры соотв создается TNetHttpClient и TNetHttpRequest В деплое для WIN32 - все работает, показывается прогресс-бар, все скачивается и тд. Однако в деплое для ANDROID при function TFMain.RunRequest(AUrl: String = ''; ARespStream: TBytesStream = nil; OnRcvData: TReceiveDataEvent = nil): TJSONObject; begin ... c := TNetHTTPClient.Create(nil); r := TNetHTTPRequest.Create(nil); ... r.OnReceiveData := OnRcvData; //если закомментировать - все ок. Если нет - то на следующем шаге подвисон. resp := r.Get(url, ARespStream); ... end; зависает. Если закомментировать присвоение процедуры ресива, то все скачивается (только без прогресса). Процедура используется для всех версий: WIN, IOS, ANDROID,MACOS и работает исправно. Кто что может сообщить по данному вопросу, вдруг кто сталкивался?
  2. С другой стороны, может быть кто-то предложит хакнуть TRestClient и достать таки из него FHttpClient поле. Может есть изящное решение. Тогда вопрос будет закрыт.
  3. В общем TREST полная шляпа в вопросе Куков. Вместо этого использовал TNetHttpClient/Request. Жаль потраченного впустую времени.
  4. Друзья, честно, объясните, если знаете. Почему в XE8 не работают куки? Даже если использовать AddAuthParameter , то когда доходит до TRestRequest.Execute, попадает в DoApplyCookieParams далее в цикле идет поиск куков и делается FClient.SetCookie внутри которого идет обращение к HTTPClient.AddServerCookie внутри которого только проверка на AllowCookies и все... Кто-нить может мне пояснить, как это вообще работает в таком случае?
  5. Не работает этот вариант с AddAuthParameter. Можете объяснить почему вы решили, что это должно сработать? Очень интересно. Дату, к примеру, не указать явным образом. В каком формате нужно передать Value?
  6. Вопрос был полностью раскрыт. Даже больше. Он идет непосредственно перед ответом. а то, что слили все в одну тему... так что поделать. Логику я не понимаю, но попробую. ОТпишусь.
  7. [XE8] Хочу простую и банальную вещь: много запросов, но авторизация (через куки) только один раз. Как это сделать? То есть как подставлять в новые запросы полученные ранее куки? Я посмотрел код и пришёл в ужас. Я не понимаю, почему закомменчено unit REST.HttpClient; ... procedure TRESTHTTP.AddServerCookie(const ACookie, AURL: string); begin if FHTTPClient.AllowCookies then // FHTTPClient.CookieManager.AddServerCookie(ACookie, AURL); ; end; Почему не создается КукиМанагер (он nil). Почему все так сложно и через известное место? :(((( Ну и что с этим делать? Почему прямое AddCookie не даёт ожидаемого эффекта? Если проще забить, то как перейти на TNetHttpClient/Request (тут все с куками хорошо, но плохо с компрессией), если нужно поддерживать GZIP на Windows/Android?
  8. KeyDown в моем примере - это обработчик. Задача была проверить какой обработчик в OnKeyDown. Чтобы не присваивать каждый раз обработчик, если он тот же на входе.
  9. Хочу сюда подписаться. Только у меня дополнительный и безрадостный вопрос: как собственно создать новый RESTRequest и передать ему полученные ранее куки, чтобы они передались в запрос и отработали?
  10. Собственно вот такая строчка: if TCustomPopupForm(self.PopupForm).OnKeyDown <> KeyDown then вызывает ошибку при компиляции Not enough actual parameters Собственно как получить подобное условие? И интересен будет комментарий к этому - почему такая ошибка.
  11. Собственно вопрос в том, что после авторизации клиент получает куку с хешем, который используется для подтверждения залогинености пользователя. В XE7 мне не удалось добавить полученную куку в новый запрос, отчего отправлять асинхронные запросы оказалось невозможным. В итоге вопрос: как добавить куки к новому запросу и нужен ли отдельный компонент клиента?
  12. Ну вдруг есть люди, которые купили ХЕ7 и на нем программируют. Цены-то не дешёвые, чтобы покупать каждые полгода новые версии только потому, что прежние не работают.
  13. То есть в старых версиях - это обречено не работать?
  14. Возникает вышеозначенная ошибка при попытке декодировать приходящий от сервера текст. Я пробовал в различных вариантах. 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 работает корректно декомпрессия в автоматическом режиме, потому вопроса о строках не возникает.
  15. Ок, все это на поверхности, но кода на компрессию все так же нет. А как в новых делфях осуществить отправку архивированного именно в GZIP методом GET? Я вот не могу разобраться. Интерес в том, что для декомпрессии в GZIP используется FZlib.DecompressGZipStream Но вот аналогичного FZlib.СompressGZipStream - НЕТ! Это первое. Второе. Получу я RawData или String - дальше что делать? Подставлять как обычное значение параметра в Params.ParameterByName().value?
  16. Допустим для примера: http://site.com/?data=aaaaabbbbbcccccddddd Как верно енкодить "aaaaabbbbbcccccddddd"? и куда подставить в коде?
  17. 1. В тегах указана версия Дельфи. XE7 2. Родной 3. тем не менее работает: ReqGet.Client.HTTPClient.Peer.GetObject as TIdCustomHTTP 4. Как на конкретном примере строки сделать компрессию и подставить полученное... куда? в какое место RestRequest?
  18. Вопрос именно в том как, а не что использовать для компрессии. Допустим есть строка, которую нужно сжать и подставить ее... куда? в значение параметра? А если GET?
  19. Я посмотрел. Ответ не дан. Конкретный код не гуглится по теме compresson - Только по теме decompression
×
×
  • Создать...