Страница 1 из 1

Передать JSON в COM - объект

Добавлено: 23 Август 2022, 17:12
harry
Коллеги, добрый день!
Столкнулся с ошибкой COM-объекта при попытке передать в качестве параметра метода JSON объект. Похоже, что не нравятся фигурные скобки.
Вот, пример кода:

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

Result = AdrWin$self.OleCtrl{'CallMethodWithoutAuth(e7c5e035-b261-4628-8d16-371dbd458c97,
											53660291-a1bc-4aad-ab66-c0dd1e47d471,
											ExtSdk2.AuthByPassword,
											{{"Login": "***", "Password": "***"},
											fix-online.sbis.ru)'}
Его выполнение вызывает ошибку
Ошибка COM.JPG
Без фигурных скобок в 4-ом параметре запрос проходит , но в этом случае COM-объект возвращает ошибку нормальным образом.

Никто не сталкивался с подобным ? Как решается ?

Передать JSON в COM - объект

Добавлено: 23 Август 2022, 18:10
harry
Странно, но такой запрос с JSON прошел. Возможно, дело в чем то еще

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

AdrWin$self.OleCtrl{'CallMethodWithoutAuth(4ed82c6a-f98f-4acc-83c7-a62af1fc0f35,
						cef5db48-ee1d-4c08-ad28-7790a1ae3a07,
						ExtSdk2.AuthByCert,
						{"Imprint": "***"},
						fix-online.sbis.ru)'}

Передать JSON в COM - объект

Добавлено: 23 Август 2022, 18:15
Дед Пахом
А разве параметры метода не надо брать в кавычки: ("4ed82c6a-f98f-4acc-83c7-a62af1fc0f35", "ExtSdk2.AuthByCert")?

Передать JSON в COM - объект

Добавлено: 23 Август 2022, 18:59
harry
Вроде, и без кавычек проходит, а в том запросе, что с ошибкой и с кавычками не проходит.

Передать JSON в COM - объект

Добавлено: 23 Август 2022, 19:06
Дед Пахом
А точно имена верные "Login" и "Password"?

Передать JSON в COM - объект

Добавлено: 23 Август 2022, 19:10
harry
Да. В СБИС логи отправлял. Как всегда, говорят, что проблема в языке. На Питоне у них все работает )

Передать JSON в COM - объект

Добавлено: 23 Август 2022, 22:57
Губин Игорь
harry писал(а): 23 Август 2022, 17:12{{"Logi
А не в скобках ли дело?

Передать JSON в COM - объект

Добавлено: 24 Август 2022, 9:21
harry
Нет, не в скобках дело. Это я экспериментировал, передавая параметры через переменные и просто текстом весь вызов метода, а левая ( в Кларионе в текcт вводится как {{.
Подозреваю, что Кларион путается в разборе параметров метода. Как только в JSON объекте появляется второй параметр, отделенный запятой, то получаю ошибку OLE.
С таким параметром проходит:

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

{"Imprint": "***"}
,а с таким ошибка

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

{"Login": "***", "Password": "***"}
такой вариант тоже не помогает

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

"{"Login": "***", "Password": "***"}"