как обрабатывать чанкованный ответ с помощью curl, ожидая JSON - PullRequest
0 голосов
/ 06 декабря 2018

Я делаю GET-запрос и получаю json или "двоичные" данные.Судя по моим тестам, шанс на ответ json находится недалеко от броска монеты.Когда я получаю двоичные данные, я также получаю заголовок ответа «Content-Length: xxx» или «Transfer-Encoding: chunked» (это также более или менее 50-50).Я не заметил одновременного получения обоих заголовков (если я добавлю опцию -i для curl в приведенном ниже фрагменте).Однако я получаю заголовок «Content-Length» для ответа json.Обычно размер ответа json составляет 280 кБ, а размер фрагментированного ответа - около 40 кБ.Я выполняю следующий скрипт.

- EDIT -

Мое текущее решение - проверить вывод с помощью file output.json | grep -c "UTF-8 Unicode" и повторить попытку (максимум 5 раз).Большинство людей скажут, что это уродливый обходной путь, а некоторые могут даже перестать говорить со мнойЯ надеюсь, что мне не нужно использовать такое «решение», как это.

1 Ответ

0 голосов
/ 27 марта 2019

curl -N (без буфера) исправляет вашу проблему?

Ранее я видел это по конвейеру curl в формататоре json, где curl перехватывает SIGPIPE и возвращает успех (поэтому ваша оболочка переходит к шагу процесса) перед отправкой последней части фрагментированного ответа в STDOUT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...