Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IdHTTP Post и GZip / 15 сообщений из 15, страница 1 из 1
09.08.2018, 12:30
    #39685435
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Отправляю post запрос
В логах вижу

IdLogFile...
Sent 09.08.2018 12:19:12: ID=33071521
Recv 09.08.2018 12:19:12: HTTP/1.1 200 OK<EOL>Date: Thu, 09 Aug 2018 09:22:24 GMT<EOL>Content-Type: text/html; charset=UTF-8<EOL>Connection: close<EOL>Vary: Accept-Encoding<EOL>Expires: Thu, 09 Aug 2018 09:22:24 GMT<EOL>Cache-Control: max-age=0<EOL>Cache-Control: no-cache, no-store, must-revalidate<EOL>Strict-Transport-Security: max-age=31536000;<EOL>Expect-CT: max-age=604800, report-uri=" https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"<EOL>Server: cloudflare<EOL>CF-RAY: 447928786c732ab5-WAW<EOL>Content-Encoding: gzip<EOL><EOL>‹ яя
Recv 09.08.2018 12:19:12:
Stat Disconnected.

я так понимаю, что-то приходит, но не распаковывается?


TIdCompressorZLib я подключил:
Код: pascal
1.
IdHTTP2.Compressor := IdCompressorZLib1;


но всё равно декомпрессия gzip не происходит.

В итоге
Код: pascal
1.
res := IdHTTP1.Post(url, PostParams);


возвращается пустая строка.

Я что-то ещё забыл?
...
Рейтинг: 0 / 0
09.08.2018, 12:40
    #39685453
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
ZLib - это разве gzip? а не zip разве?
Вот смотри что над кодом написано: http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/ZLibCompressDecompress_(Delphi)

~~~~~~~~~~~

попробуй руками делать как тут:

http://delphi.org/2016/01/decompressing-the-trestresponse/

https://stackoverflow.com/a/19195232/976391
...
Рейтинг: 0 / 0
09.08.2018, 12:45
    #39685466
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Когда я выполняю GET, то расшифровка (декомпрессия) выполняется
...
Рейтинг: 0 / 0
09.08.2018, 12:50
    #39685473
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Cloudflare -- это сервис для защиты от ддоса, любителей парсинга и других гадостей. И если он заносит в черный список, то будет отключать сразу, даже не отправив что-либо на реальный сервер. В этом случае слать данные надо вместе с куками (читай, перед отправкой зайти в той же сессии на сервер, чтобы он выставил куки, и после уже отправлять пост-данные). Я бы в эту сторону сначала смотрел.
...
Рейтинг: 0 / 0
09.08.2018, 12:54
    #39685479
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
я шлю с куками и кодом защиты csrf
...
Рейтинг: 0 / 0
09.08.2018, 12:55
    #39685481
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
JaDiCloudflare -- это сервис для защиты от ддоса, любителей парсинга и других гадостей.

Если бы забанили IP, я бы и через браузер не смог достучаться. Но сайт доступен.
...
Рейтинг: 0 / 0
09.08.2018, 13:00
    #39685485
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Наверное дело в другом.
Выполняю:
Код: pascal
1.
IdHTTP1.Post(url, PostParams, responseIn);


Но размер стрима responseIn (TMemoryStream) нулевой.
...
Рейтинг: 0 / 0
09.08.2018, 13:41
    #39685532
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Ariochпопробуй руками делать как тут:

http://delphi.org/2016/01/decompressing-the-trestresponse/

https://stackoverflow.com/a/19195232/976391

Почитал. Пробую.
После post запроса, размер responseIn = 25 байт, т.е. что там есть.

Выполняю:
Код: pascal
1.
2.
responseIn.Position := 0;
IdCompressorZLib1.DecompressGZipStream(responseIn, responseOut);


Исключений и ошибок нет, но стрим responseOut имеет нулевой размер в итоге.
...
Рейтинг: 0 / 0
09.08.2018, 14:07
    #39685564
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Взял программу PostMan, вставил туда все заголовки, куки и параметр.
Получил правильный ответ. Читабельный. И размер 11 байт.
...
Рейтинг: 0 / 0
09.08.2018, 14:07
    #39685566
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
AriochZLib - это разве gzip? а не zip разве?
TZCompression/Decompression это чистый deflate. В gzip и zip используется этот же метод сжатия, но ещё и дополнительные заголовки.
...
Рейтинг: 0 / 0
09.08.2018, 14:21
    #39685577
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
А так и должно быть? 2 раза "sent"?

это лог одного post-запроса
...
Рейтинг: 0 / 0
09.08.2018, 14:30
    #39685585
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Вставил в Posnman данные из своей программы и Posnman вернул правильный ответ. Т.е. я отправляю серверу правильные данные.
Остаётся понять, что не так с ответом и как его "распаковать".
...
Рейтинг: 0 / 0
09.08.2018, 14:34
    #39685587
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Код: pascal
1.
res := IdHTTP1.Post(url, PostParams);



это то, что приходит от idHTTP1. Post , если свойство IdHTTP1. Compressor оставить пустым

...
Рейтинг: 0 / 0
09.08.2018, 15:21
    #39685618
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Создал новое тестовое простейшее приложение, подключить компрессор.
Всё работает
...
Рейтинг: 0 / 0
10.08.2018, 12:43
    #39686017
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IdHTTP Post и GZip
Дело было не в бабине GZIP.
Название передаваемого (в POST) параметра "ID" - регистрозависимое, т.е. "id" правильно.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IdHTTP Post и GZip / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]