Я использую Guzzle в процессе PHP для вызова API.
Код: Выделить всё
$response = $this->client->request('GET', 'droits_acces', [
'stream' => true,
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/x-ndjson',
]
]);
Моя логика заключалась в том, чтобы взять содержимое ответа, сохранить его во временном файле, а затем прочитать его. используя библиотеку.
Но когда я использую $response->getBody()->getContents(), я получаю ответ с большим количеством разрывов строк. Однако в NDJSON разрывы строк представляют собой разделение между одним объектом и другим, если я правильно понимаю.
[edit]
Вот снимок экрана ответа, который я получаю, когда Я использую $response->getBody()->getContents().
Экран ответа тела
Я попробовал прочитать его с помощью библиотеки ndjson, используя пример в документации (с пробелы только между объектами, и это работает). Единственная разница между ними — это пробелы...
Когда я удаляю «лишние» разрывы строк, чтобы получить файл, подобный показанному ниже, все работает хорошо.В этом примере:
$content не работает, но $content2 работает
Код: Выделить всё
public function getAccessRights()
{
$temp_file = tempnam(sys_get_temp_dir(), 'TMP_');
$temp_file_with_extension = $temp_file . '.ndjson';
rename($temp_file, $temp_file_with_extension);
$file_handle = fopen($temp_file_with_extension, 'a+');
// Content not working
$content =
Подробнее здесь: [url]https://stackoverflow.com/questions/78702832/how-to-read-ndjson-stream-response-in-php[/url]
Мобильная версия