Группа: Пользователи
Сообщений: 12
Спасибо сказали: 2 раз
Рейтинг: 0
Добрый день. Есть задача соединить 1С 7.7 и сайт посредством API. Ранее API в 1С никогда не использовал. Воспользовался гуглом, нашел, как ни странно, не много информации, но все же. Накидал в 1С небольшую процедурку:
Статус = СокрЛП(WinHttp.Status); Описание = СокрЛП(WinHttp.StatusText); Сообщить(СтрокаОтветаНаЗапрос); Исключение Сообщить("Ошибка: "+ОписаниеОшибки(),"!"); КонецПопытки; КонецПроцедуры
Тело запроса грузится из переменной - ИмяФайлаBody. Ответ получаем в строке Сообщения (если ответ не будет слишком велик и не выдаст ошибку, это не проблема) ну и записывваем в файл test_return.json.
Ещё хотел поинтересоватся, кто уже работал с API. Есть какие то готовые парсеры для строки или каждый API по разному разбирается, нет каких то статичных якорей и т.д. В общем посоветуйте как лучше разбирать
Группа: Основатель
Сообщений: 13983
Из: Киев
Спасибо сказали: 4553 раз
Рейтинг: 3679.4
Цитата(Makcim1981 @ 21.06.22, 11:38)
Есть какие то готовые парсеры для строки
Современные инструменты умеют превращать json в то, с чем можно работать. 1С 7.7 штатно вряд-ли. Но [необходимо зарегистрироваться для просмотра ссылки] первая ссылка в Гугле, может то, что вам надо.
Цитата(Makcim1981 @ 21.06.22, 11:38)
как мне получить Кирилические символы в нормальном виде
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 2 раз
Рейтинг: 0
Vofka @ Сегодня, 15:43
,
Указать кодировку для Объекта типа текст можно (ну и только, что попробовал на всякий случай), по Монитору четко видно, что сама функция WinHttp.ResponseText() возвращает уже в кракозябрах. Я так понимаю как то надо указать напрямую до запроса, но не могу понять как
Тоже ничего не меняет. Меня смущает само представление в котором я получаю ответ "name":"???»N?N???N? 1" (там должно быть "name": "Клієнт 1"), представление какое то, как будто уже, что то перекодировываться пыталось.
Цитата(Vofka @ 22.06.22, 9:59)
Что за Монитор?
ну в отладчике я имел ввиду ... при отладке кода глянул
// Преобразовать строку из UTF-8 Функция _ПреобразоватьСтрокуИзУТФ8(Стр) Длина=СтрДлина(Стр); Итог=""; Для Н=1 По Длина Цикл Знак=Сред(Стр,Н,1); Код=КодСимв(Знак); Если Код<128 Тогда Итог=Итог+Знак; ИначеЕсли (Код>=128)И(Код<192) Тогда Иначе Н=Н+1; Знак2=Сред(Стр,Н,1); Код2=КодСимв(Знак2); Если Код=208 Тогда Если Код2=129 Тогда Итог=Итог+"Ё"; Иначе Итог=Итог+Симв(КодСимв("А")+Код2-144); КонецЕсли; ИначеЕсли Код=209 Тогда Если Код2=145 Тогда Итог=Итог+"ё"; Иначе Итог=Итог+Симв(КодСимв("р")+Код2-128); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Возврат Итог; КонецФункции
Группа: Пользователи
Сообщений: 12
Спасибо сказали: 2 раз
Рейтинг: 0
popenko @ Сегодня, 11:52
, Не помогло ... мне кажется, что проблема в самом объекте WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1") ... точнее в правильной передаче параметров в него.
уже на этом этапе возвращается СтрокаОтветаНаЗапрос = WinHttp.ResponseText(); строка с краказябрами которые нельзя конвертировать. То есть мне кажется, что в самом объекте уже перекодируется на нечитаемую фигню.
После примененного выше совета разница не велика )
{"status":"ok","error":"","data":{"client_1":{"phone":"+38 (097) 875-26-44","name":"???»N?N???N? 1","ifp_id":"125","code":null}}} - до {"status":"ok","error":"","data":{"client_1":{"phone":"+38 (097) 875-26-44","name":"???N?N???N? 1","ifp_id":"125","code":null}}} - после
Просто убрало один символ функцией
Прийдется либо curl либо другой объект пробовать (((
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!