Рекурсивная вложенность ответа при GetRezult

Mini web-сервер для печати чеков на фискальных регистраторах из мобильных приложений через HTTP запрос JSON.
Ответить
Alexey
Сообщения: 205
Зарегистрирован: 13 мар 2017, 16:00
Контактная информация:

Рекурсивная вложенность ответа при GetRezult

Сообщение Alexey » 09 ноя 2019, 23:00

Web-сервер: Kkm Server
Version : 2.1.29.23
Обратный вызов.
Обратил внимание, что при повторном вызове GetRezult по одной команде в следующем запросе Rezult равен всему прошлому запросу.
В итоге, при первом запросе

Код: Выделить всё

(
       [Command] => GetRezult
       [IdCommand] => 1fa9cb88-a84e-4983-9fb9-759134ee7171
)
ответ

Код: Выделить всё

Array
                (
                    [Rezult] => Array
                        (
                            [Command] => <Не определено>
                            [Error] => <Не определено>
                            [Warning] => 
                            [Status] => 3
                            [IdCommand] => 1fa9cb88-a84e-4983-9fb9-759134ee7171
                        )

                    [Command] => GetRezult
                    [Error] => Команда с таким IdCommand не найдена
                    [Warning] => 
                    [Status] => 3
                    [IdCommand] => 
                )
при втором

Код: Выделить всё

[1] => Array
                (
                    [Rezult] => Array
                        (
                            [Rezult] => Array
                                (
                                    [Command] => <Не определено>
                                    [Error] => <Не определено>
                                    [Warning] => 
                                    [Status] => 3
                                    [IdCommand] => 1fa9cb88-a84e-4983-9fb9-759134ee7171
                                )

                            [Command] => GetRezult
                            [Error] => Команда с таким IdCommand не найдена
                            [Warning] => 
                            [Status] => 3
                            [IdCommand] => 
                        )

                    [Command] => GetRezult
                    [Error] => 
                    [Warning] => 
                    [Status] => 0
                    [IdCommand] => 
                )
Вложенность увеличивается не всегда. Примерно при двадцатом запросе по одной операции IdCommand у меня вложенность Rezult достигала 5 уровней.

Alexey
Сообщения: 205
Зарегистрирован: 13 мар 2017, 16:00
Контактная информация:

Re: Рекурсивная вложенность ответа при GetRezult

Сообщение Alexey » 14 ноя 2019, 00:09

Аналогичная проблема еще в одном случае. Отправляю команду на печать чека с IdCommand, потом случайно еще раз отправляю команду с такой же IdCommand. В итоге, при вызове GetRezult я уже не получу результат первого выполнения, мне уже будет возвращаться информация, что команда уже выполнена.

Мне кажется правильным будет не переписывать результаты при команде GetRezult и при любом другом вызове с уже использованным IdCommand.

Audim
Администратор
Сообщения: 1797
Зарегистрирован: 17 мар 2015, 18:36

Re: Рекурсивная вложенность ответа при GetRezult

Сообщение Audim » 14 ноя 2019, 01:33

Не получается воспроизвести....
Это все через обратный вызов?

Alexey
Сообщения: 205
Зарегистрирован: 13 мар 2017, 16:00
Контактная информация:

Re: Рекурсивная вложенность ответа при GetRezult

Сообщение Alexey » 14 ноя 2019, 15:00

Да, через обратный вызов.
Возможно сыграло то, что я непрерывно вызывал во время отладки модуля для Битрикс.
И я при каждом соединении передавал один запрос.

(
[Command] => GetRezult
[IdCommand] => 1fa9cb88-a84e-4983-9fb9-759134ee7171
)

Если вы непрерывно при каждом соединении запрашиваете статус одной команды все 10-20 ответов будут одинаковыми? Проверьте, пожалуйста.


И по второму. Ну природа мне кажется той же. При попытке выполнить команду с тем же IdCommand, вместо сохранения результата выполненной команды переписывается ответ, то есть результат последней команды (что команда уже выполнена).

Аватара пользователя
saratovout
Сообщения: 60
Зарегистрирован: 08 авг 2019, 23:52

Re: Рекурсивная вложенность ответа при GetRezult

Сообщение saratovout » 23 ноя 2019, 01:50

Alexey писал(а):
14 ноя 2019, 00:09
Аналогичная проблема еще в одном случае. Отправляю команду на печать чека с IdCommand, потом случайно еще раз отправляю команду с такой же IdCommand.
эта фишка на самом деле очень давно.
в своем приложении сделайте рекурсивную обработку - если "Rezult" массив и в нем есть другой "Rezult" массив..

Audim
Администратор
Сообщения: 1797
Зарегистрирован: 17 мар 2015, 18:36

Re: Рекурсивная вложенность ответа при GetRezult

Сообщение Audim » 24 ноя 2019, 20:03

Не получается воспроизвести.

У Вас какой "Тип обратного вызова" ?

Alexey
Сообщения: 205
Зарегистрирован: 13 мар 2017, 16:00
Контактная информация:

Re: Рекурсивная вложенность ответа при GetRezult

Сообщение Alexey » 26 ноя 2019, 21:07

POST

Да, я собственно, так и сделал, что рекурсивно вытаскиваю, если такое прилетает. Думал, что легко Дмитрий воспроизведет и устранит. :?

Audim
Администратор
Сообщения: 1797
Зарегистрирован: 17 мар 2015, 18:36

Re: Рекурсивная вложенность ответа при GetRezult

Сообщение Audim » 27 ноя 2019, 20:00

Через POST проверил все... не получается воспроизвести....

Ответить