Страница 3 из 5
Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 21:50
Игорь Столяров
finsoftrz писал(а): 27 Июнь 2025, 21:40
Они не правы в том, что сервис не умеет декодировать urlencode.
Немного не так.
Вы в командной стоке передаёте значение в UTF-8 и кодируете его т.н. urlencode.
CURL.EXE должен декодировать командную строку и передать сервису значение просто в UTF-8
(как это делается при вызове REST API из LibCurl).
REST сервис Diadoс ничего не знает об "urlencode" и знать не должен.
urlencode - это способ передать "неанглийские и непечатные" символы из командной строки в CURL.EXE
Насчёт платной техподдержки - cогласен, не очень понятно.
Разработчик должен платить за то, что загоняет в сервис пользователей, которые будут покупать подписку.
Пипец !

Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 22:00
finsoftrz
Curl.exe сам по себе ничего не делает. Он просто передает значения из командной строки в curlib. Еще раз, я практически не сомневаюсь, что у Вас при работе из curlib будет аналогичная проблема.
Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 22:05
finsoftrz
Игорь Столяров писал(а): 27 Июнь 2025, 21:50
REST сервис Diadoс ничего не знает об "urlencode" и знать не должен.
urlencode - это способ передать "неанглийские и непечатные" символы из командной строки в CURL.EXE
Почему не должен? Кодирование в urlencode это общепринятый безопасный механизм передачи параметров в вебе. Utf8 не единственный формат в вебе, просто там так удобнее для унификации. Много сайтов, например, работают в windows кодировке.
Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 22:15
Игорь Столяров
finsoftrz писал(а): 27 Июнь 2025, 22:00
Он просто передает значения из командной строки в curlib.
Да. Вот только записать строку в UTF-8 в командную строку не получается.
Пасаны решили, что нужно тогда применить "urlencode" ... это логично, но вовсе не факт.
Как минимум, хотелось бы увидеть какое-нибудь описание по передаче параметров в национальной кодировке.
finsoftrz писал(а): 27 Июнь 2025, 22:00
что у Вас при работе из curlib будет аналогичная проблема
Только потому что я тупой. Но если Вы повторите без измений запрос из POSTMAN в LibCurl - то проблем точно не будет.
И ещё CURL.EXE имеет массу сборок. Может быть у Вас какая-то без поддержки работы с национальными кодировками ?
Им там наши проблемы непонятны. Или сборка с докрымских времён ?
Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 22:19
finsoftrz
Игорь Столяров писал(а): 27 Июнь 2025, 22:15
finsoftrz писал(а): 27 Июнь 2025, 22:00
Он просто передает значения из командной строки в curlib.
Да. Вот только записать строку в UTF-8 в командную строку не получается.
Пасаны решили, что нужно тогда применить "urlencode" ... это логично, но вовсе не факт.
Как минимум хотелось бы увидеть какое-нибудь описание по передаче параметром в национальной кодировке.
finsoftrz писал(а): 27 Июнь 2025, 22:00
что у Вас при работе из curlib будет аналогичная проблема
Только потому что я тупой. Но если Вы повторите без измений запрос из POSTMAN в LibCurl - то проблем не будет.
И ещё CURL.EXE имеет массу сборок. Может быть у Вас какая-то без поддержки работы с национальными кодировками ?
Им там наши проблемы непонятны. Или сборка с докрымских времён ?
Игорь, не надо ничего придумывать. Это общеизвестный вопрос, открываете интернет и гуглите.
Предложение попробовать запрос из curlib в силе, если есть желание.
Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 22:26
Игорь Столяров
finsoftrz писал(а): 27 Июнь 2025, 22:19
открываете интернет и гуглите
В смысле ? Что гуглить ? Как передать параметры UTF-8 в командной строке CURL.EXE ? Зачем ?
Да у меня CURL.EXE нет. И я не собираюсь никакой EXE запускать и парсить потом ответы в текстовых файлах ...

Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 22:37
finsoftrz
Вы меня не слышите. Попробуйте погуглить curlib кириллица, например, или что-то подобное. Увидите обсуждение использования curlib на разных языках программирования (c++, php и тп).
Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 22:53
Игорь Столяров
finsoftrz писал(а): 27 Июнь 2025, 22:37
Вы меня не слышите.
Пардон, но Вы сами себя не слышите.
Вы работаете с оболочкой CURL.EXE которая распарсивает командную строку и далее передаёт параметры в LibCurl.
Работайте напрямую с LibCurl (например через прекрасный класс ДП) и у Вас не будет проблем c параметрами в UTF-8.
finsoftrz писал(а): 27 Июнь 2025, 22:37
Увидите обсуждение использования curlib на разных языках программирования (c++, php и тп).
Согласен. И кто-то там запускает с PHP CURL.EXE ? Уходите оттуда - это демоны ...

Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 23:14
finsoftrz
Речи нет про curl.exe, везде про curlib.
Почему бы Вам самому не попробовать выполнить простой запрос через curlib? Мне это дольше делать, так как придётся изучать работу класса, а Вы с ним активно работаете.
Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 23:48
Игорь Столяров
Я и привёл ниже фрагмент запроса где параметр с именем файла кодируется в UTF-8.
Можно попробовать передать русское наименование - не думаю, что дожны появиться проблемы.
Там же указано место для формирования запроса с передачей формализованного ЭДО документа.
Можете просто тупо указать Ваш запрос по описанию (как это сделал я для передачи файла документа).
Конкретно с DIADOC уже давно не работал. Я Вам рассказывал, что эта работа не получила продолжение.
Дорогая подписка на интеграцию.

Но всё сделанное прекрасно работает.
finsoftrz писал(а): 27 Июнь 2025, 23:14
Речи нет про curl.exe, везде про curlib.
Вот и я о том же говорю ...
Передача кириллицы в http запросе через curl
Добавлено: 27 Июнь 2025, 23:58
finsoftrz
Ну так что, попробуем завтра на примере запроса xsd схемы? Там не нужно тело передавать, только несколько параметров в строке адреса, один кириллический. Если ответ будет, значит работает, нет, не работает. Я Вам на почту пришлю строку запроса с параметрами.
Передача кириллицы в http запросе через curl
Добавлено: 28 Июнь 2025, 0:24
Игорь Столяров
finsoftrz писал(а): 27 Июнь 2025, 23:58
Если ответ будет, значит работает, нет, не работает
Выполните в моём классе передачу файла с документом в ЛК - это точно работает.
Далее уже указывайте, что Вам нужно сделать.
Если что-то не получится - сбрасывайте пример, будем вместе смотреть в чём затык.
Передача кириллицы в http запросе через curl
Добавлено: 28 Июнь 2025, 8:25
Игорь Столяров
finsoftrz писал(а): 27 Июнь 2025, 23:58
на примере запроса xsd схемы
Я так понимаю, что речь идёт о функции GetContent().
Для неё нужно запросить список доступных в ящике типов документов:
Код: Выделить всё
! Получить список типов документов, доступных в ящике
DiaDocClass.GetDocumentTypes Procedure(String xBoxId) !,Long
Result CurlCode
json cJSONFactory
Root &cJson
Code
If Self.PriorCurl('GET',Result)
Self.ResponseBuffer.Kill
Result = Self.Curl.SendRequest('https://diadoc-api.kontur.ru/V2/GetDocumentTypes?boxId=' & xBoxId, Self.ResponseBuffer)
Self.Debug('GetDocumentTypes_Response.json', Self.ResponseBuffer, CP_UTF8) ! Запись протокола отладки
If Self.CheckResponse(Result,'Ошибка метода GetDocumentTypes')
Root &= json.Parse(Self.ResponseBuffer,CP_ACP)
If Not (Root &= Null)
Message(Root.ToString(True))
Root.Delete()
end
end
end
Return Result
У меня в тестовом ящике гора какого мусора.
Но как я понимаю - для формализованных типов документов мы получаем данные для запроса XSD схемы:
Пробуйте - что у Вас покажет в ящике.
И вот дальше, уже вызываем GetContent() с передачей в него параметров из GetDocumentTypes().
Как я понимаю - у Вас проблема именно с передачей в GetContent() русского значения для параметра "function".
Но у меня для всех документов в ящике function=default (см. рисунок выше) ....

Передача кириллицы в http запросе через curl
Добавлено: 28 Июнь 2025, 8:36
finsoftrz
Это видимо потому, что вы на тестовом контуре. Default только у invoice. Я поэтому и предложил дать реквизиты на чтение из рабочего. Да, речь про GetContent для проверки.
Передача кириллицы в http запросе через curl
Добавлено: 28 Июнь 2025, 8:41
finsoftrz
Причём могу дать сразу ссылку на xsd схему, чтобы не искать среди доступных документов в ящике. Вам останется выполнить эту ссылку.