notricky
Пользователи-
Постов
86 -
Зарегистрирован
-
Посещение
Весь контент notricky
-
Собственно поступаю я так - передаю по ссылке в процедуру 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 ответа
-
- HttpRequest
- Net
-
(и ещё 1 )
C тегом:
-
Друзья, честно, объясните, если знаете. Почему в XE8 не работают куки? Даже если использовать AddAuthParameter , то когда доходит до TRestRequest.Execute, попадает в DoApplyCookieParams далее в цикле идет поиск куков и делается FClient.SetCookie внутри которого идет обращение к HTTPClient.AddServerCookie внутри которого только проверка на AllowCookies и все... Кто-нить может мне пояснить, как это вообще работает в таком случае?
-
Тогда уж @ вначале TCustomPopupForm тоже
-
[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?
-
KeyDown в моем примере - это обработчик. Задача была проверить какой обработчик в OnKeyDown. Чтобы не присваивать каждый раз обработчик, если он тот же на входе.
-
Собственно вот такая строчка: if TCustomPopupForm(self.PopupForm).OnKeyDown <> KeyDown then вызывает ошибку при компиляции Not enough actual parameters Собственно как получить подобное условие? И интересен будет комментарий к этому - почему такая ошибка.
-
Как создать новый RESTRequest и передать ему полученные ранее куки
notricky опубликовал вопрос в TRESTRequest
Собственно вопрос в том, что после авторизации клиент получает куку с хешем, который используется для подтверждения залогинености пользователя. В XE7 мне не удалось добавить полученную куку в новый запрос, отчего отправлять асинхронные запросы оказалось невозможным. В итоге вопрос: как добавить куки к новому запросу и нужен ли отдельный компонент клиента? -
Возникает вышеозначенная ошибка при попытке декодировать приходящий от сервера текст. Я пробовал в различных вариантах. 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 работает корректно декомпрессия в автоматическом режиме, потому вопроса о строках не возникает.
-
Ок, все это на поверхности, но кода на компрессию все так же нет. А как в новых делфях осуществить отправку архивированного именно в GZIP методом GET? Я вот не могу разобраться. Интерес в том, что для декомпрессии в GZIP используется FZlib.DecompressGZipStream Но вот аналогичного FZlib.СompressGZipStream - НЕТ! Это первое. Второе. Получу я RawData или String - дальше что делать? Подставлять как обычное значение параметра в Params.ParameterByName().value?
-
1. В тегах указана версия Дельфи. XE7 2. Родной 3. тем не менее работает: ReqGet.Client.HTTPClient.Peer.GetObject as TIdCustomHTTP 4. Как на конкретном примере строки сделать компрессию и подставить полученное... куда? в какое место RestRequest?
-
Вопрос именно в том как, а не что использовать для компрессии. Допустим есть строка, которую нужно сжать и подставить ее... куда? в значение параметра? А если GET?