Передача кириллицы в http запросе через curl

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8066
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Передача кириллицы в http запросе через curl

Сообщение Игорь Столяров »

Конкретно в этом случае, проблема в том, что кодировать для Diadoc нужно только одно значение параметра с русскими буквами.
А применение Urlencode (ну или printf('%u',ParamStr)) ко всей строке параметров закодирует и другие спецсимволы. :shock:
Тут мало того, что у всех участников этого действия тараканы, так они ещё и разные. :D
Последний раз редактировалось Игорь Столяров 28 Июнь 2025, 19:13, всего редактировалось 1 раз.
Make Clarion Great Again ! 😎
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8066
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Передача кириллицы в http запросе через curl

Сообщение Игорь Столяров »

finsoftrz писал(а): 28 Июнь 2025, 18:23 Мне кажется, я сильно модней
Даже не сомневаюсь в этом. И ещё покупаете современные сервера для использование технологий.
Но потом стартуете на нём десятки раз внешний EXE, c новой авторизацией на REST сервисе для каждой
операции и записью результата в текстовые файлы, с их последующей загрузкой для парса ... 🤦‍♀️

Невольно напрашивается мой любимый вопрос. А нафига ? :D
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5283
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 65 раз

Передача кириллицы в http запросе через curl

Сообщение finsoftrz »

Дед Пахом писал(а): 28 Июнь 2025, 18:45 Надо --data-urlencode value1=ЙЦУКЕНГ без кодировки.
Проверял, не работает. Ни в ansi, ни в utf8. Почему, хз. На выходе все равно получается стандартный urlencode, который почему-то некорректно передается в сервис. К слову, в postmen есть возможность конвертации запросов в синтаксис curl. И он тоже дает аналогичный код с параметром в urlencode вида function=%D0%A1%D0%A7%D0%A4%D0%94%D0%9E%D0%9F
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5283
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 65 раз

Передача кириллицы в http запросе через curl

Сообщение finsoftrz »

Игорь Столяров писал(а): 28 Июнь 2025, 19:02 Конкретно в этом случае, проблема в том, что кодировать для Diadoc нужно только одно значение параметра с русскими буквами.
А применение Urlencode (ну или printf('%u',ParamStr)) ко всей строке параметров закодирует и другие спецсимволы. :shock:
Тут мало того, что у всех участников этого действия тараканы, так они ещё и разные. :D
Разумеется, кодируется только значение (слово СЧФДОП).
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5283
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 65 раз

Передача кириллицы в http запросе через curl

Сообщение finsoftrz »

Игорь Столяров писал(а): 28 Июнь 2025, 19:11
finsoftrz писал(а): 28 Июнь 2025, 18:23 Мне кажется, я сильно модней
Даже не сомневаюсь в этом. И ещё покупаете современные сервера для использование технологий.
Но потом стартуете на нём десятки раз внешний EXE, c новой авторизацией на REST сервисе для каждой
операции и записью результата в текстовые файлы, с их последующей загрузкой для парса ... 🤦‍♀️

Невольно напрашивается мой любимый вопрос. А нафига ? :D
Авторизация в любом случае выполняется при каждом запросе к сервису. Стартовать внешний exe в виде процесса не такая затратная операция, дернуть 500кб из кеша. Создание временных файлов тоже, они маленькие. Сколько временных файлов создает винда, не задумывались? Я понимаю, что без файлов более экономично. Нафига - это проще и быстрее при отладке и сопровождении. Не надо думать, что пользователи только и делают, что обращаются к внешним серверам. У них это занимает, может, долю процента рабочего времени. Если это была бы не вспомогательная задача, то я бы подумал об оптимизации и использовании библиотеки.
C6/C12, ШВС, tps/btrieve.
PavelNK
Старожил
Сообщения: 280
Зарегистрирован: 15 Март 2011, 8:02

Передача кириллицы в http запросе через curl

Сообщение PavelNK »

А если Fiddler'ом посмотреть, что реально улетает на портал
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8066
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Передача кириллицы в http запросе через curl

Сообщение Игорь Столяров »

finsoftrz писал(а): 28 Июнь 2025, 19:30 Авторизация в любом случае выполняется при каждом запросе к сервису.
Не хотелось бы Вас огорчать в день такого великого достижения ... но нет.
Авторизация выполняется разово и далее уже идёт обмена GET / PUT и т.д.

Тут даже не вопрос о том, что это ресурсозатратно, купите ещё один сервер.
Когда Вы с одного IP адреса инициируете долбёжку REST авторизациями - он
начинает отвечать через time-out избегая перегрузки DOS атакой.
finsoftrz писал(а): 28 Июнь 2025, 19:30 Нафига - это проще и быстрее при отладке и сопровождении.
В чём проще ? Я сегодня за два часа получил список параметров и ответ сервиса,
с которым неработал несколько лет. Половина времени ушла на поиск и чтение справки.
А сопровождение текстовых строк запуска c параметрами будет через год супер-квестом. 🤦‍♀️
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5283
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 65 раз

Передача кириллицы в http запросе через curl

Сообщение finsoftrz »

Игорь Столяров писал(а): 28 Июнь 2025, 20:34
finsoftrz писал(а): 28 Июнь 2025, 19:30 Авторизация в любом случае выполняется при каждом запросе к сервису.
Не хотелось бы Вас огорчать в день такого великого достижения ... но нет.
Авторизация выполняется разово и далее уже идёт обмена GET / PUT и т.д.

Тут даже не вопрос о том, что это ресурсозатратно, купите ещё один сервер.
Когда Вы с одного IP адреса инициируете долбёжку REST авторизациями - он
начинает отвечать через time-out избегая перегрузки DOS атакой.
finsoftrz писал(а): 28 Июнь 2025, 19:30 Нафига - это проще и быстрее при отладке и сопровождении.
В чём проще ? Я сегодня за два часа получил список параметров и ответ сервиса,
с которым неработал несколько лет. Половина времени ушла на поиск и чтение справки.
А сопровождение текстовых строк запуска c параметрами будет через год супер-квестом. 🤦‍♀️
Не хочу дискутировать, так как плохо понимаю, про что Вы пишите. :shock:
Два часа это очень много. Я все не мог понять, что Вы так упорно не хотите провести простой тест, думал, минут 10-15 от силы займет. В таком случае, вдвойне спасибо за приложенные усилия, не хотел так напрягать.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5283
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 65 раз

Передача кириллицы в http запросе через curl

Сообщение finsoftrz »

Подумал, что, возможно, влияет какая-то установка в header. Поскольку странно, что задокументированная опция --data-urlencode не срабатывает.
C6/C12, ШВС, tps/btrieve.
Ответить