Как перевести запрос curl в запрос на 1с

Обновлено: 07.07.2024

В этом разделе будем использовать curl для выполнения тех же запросов API сервиса прогноза, которые делали ранее с помощью Postman. Если curl еще не установлен, то читаем вводную инструкцию по установке curl.

👨‍💻 Создаем запрос к OpenWeatherAPI с помощью curl

  • Предположим, что практическое занятие раздела Отправка запросов в Postman выполнено, возвращаемся в Postman.
  • В любом запросе кликаем на кнопку Code под кнопкой Save
  • В диалоговом окне “Generate Code Snippets” выбираем cURL из выпадающего списка и нажимаем на кнопку Copy to Clipboard

Код Postman для запроса прогноза погоды OpenWeatherMap выглядит в формате cURL следующим образом:

Postman добавил свою информацию о хедере (обозначено -Н) Тэги добавленного заголовка можно удалить. Также можно удалить знаки “", они добавлены для читаемости текста.

Кроме того, обратите внимание, что в Windows нужно изменить одинарные кавычки на двойные, потому что одинарные кавычки не поддерживаются в терминале Windows по умолчанию.

Вот запрос curl с удаленными символами -H и обратной косой чертой, а одинарные кавычки преобразованы в двойные кавычки:

  • Curl доступен на MacOS по умолчанию. Если на Windows curl еще не установлен, то инструкции по установке по ссылке, нужно выбрать одну из бесплатных версий с правами Администратора.
  • Открываем терминал
    • на OS Windows нажимаем ctrl+R и вводим команду cmd , Правой кнопкой мыши вызываем меню и выбираем Paste для вставки запроса.
    • на MacOS открываем iTerm или терминал, нажимая cmd+Пробел и вводим команду Terminal Вставляем запрос в командную строку и жмем кнопку Enter .

    Ответ от OpenWeatherMap на наш запрос будет выглядеть так:

    Этот запрос минимизирован. Вы можете развернуть его, например на сайте JSON pretty print или, на MacOS с установленным Python добавив | python -m json.tool в конец cURL запроса, чтобы минимизировать JSON в ответе (Для подробностей можно посмотреть ветку на Stack Overflow по этой теме).

    • Самостоятельно сделаем curl запрос на 5-дневный прогноз, сохраненный в Postman. И третий API запрос OpenWeatherMap? сохраненный в Postman тоже выполняем в curl

    Одинарные и двойные кавычки в запросах curl на Windows

    При использовании curl на Windows могут возникнуть проблемы с одинарными и двойными кавычками.

    Проблема в том, что содержимое тела запроса часто форматируется в JSON, что требует двойных кавычек. Поскольку вы не можете использовать двойные кавычки внутри других двойных кавычек, вы столкнетесь с проблемами при отправке запросов curl в этих сценариях.

    maksyandra --> maksyandra



    Просмотр профиля

    Есть запрос к АПИ сайта написан на PHP. Как его реализовать через 1С.
    Сам запрос

    Vofka --> Vofka



    Просмотр профиля maksyandra --> maksyandra



    Просмотр профиля Vofka @ Сегодня, 17:31 ,
    Можно поподробнее?? А то что-то у меня не выходит. Vofka --> Vofka



    Просмотр профиля maksyandra --> maksyandra



    Просмотр профиля Vofka --> Vofka



    Просмотр профиля

    А, ну тогда всё понятно.

    Что конкретно не получается?

    maksyandra --> maksyandra



    Просмотр профиля

    Получаю пустую строку

    logist --> logist



    Просмотр профиля

    это параметры, они должны быть в адресе, а не в теле

    maksyandra --> maksyandra



    Просмотр профиля BigProblem --> BigProblem



    Просмотр профиля

    maksyandra @ Сегодня, 18:20 ,
    Посмотрите отладчиком что находится в ХТТПОтвет (в частности ХТТПОтвет.КодСостояния - возможно идет редирект куда-то или еще какая ошибка, о которой в ХТТПОтвет.Заголовки можно поискать)

    Запрос.УстановитьТелоИзСтроки("&login=логин&password=пароль", "UTF-8",ИспользованиеByteOrderMark.НеИспользовать);

    Еще вот это попробуйте переписать вот так:

    Ну и еще можно попробовать (хотя это соломинка, которая редко помогает):

    В крайнем случае - вшить куда-то компоненту curl и запускать ее через COMОбъект("WScript.Shell"). Как-то вот так:

    Petre --> Petre



    Просмотр профиля это параметры, они должны быть в адресе, а не в теле
    Не факт. Видел обе вариации.
    maksyandra @ Вчера, 18:20 ,
    Посмотрите запрос и ответ в fiddler. Допрацьовую:
    - "Бухгалтерія для України 2.1";
    - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". maksyandra --> maksyandra



    Просмотр профиля

    GET запросы в 1С 8.3

    Принцип работы GET запроса очень прост. После соединения с сервером происходит отправка заголовка запроса, и, если запрос одобрен, отправителю возвращается ответ, содержащий тело с содержимым запрашиваемого ресурса.

    Отличительной особенностью GET запроса является отсутствие тела запроса, наличествуют только заголовки.

    Для начала рассмотрим вопрос, как же нам сформировать сам текст запроса. На самом деле в отношении файла с картинкой это совсем не сложно. Воспользуемся инструментами браузера. Я буду использовать Оперу, в Вашем браузере процесс может несколько отличаться, но принцип один.

    Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
    Попробуйте бесплатно по ссылке >>

    Откроется окно с кодом, где нас интересует тэг img src= и далее адрес картинки:

    получение url адреса

    Вот этот адрес и нужно скопировать. В разных браузерах по-разному можно это сделать, в Опере это проще всего сделать, перейдя сначала в режим редактирования (правая кнопка мышки – Edit attribute).

    Теперь разберем ее на две части:

      – это наш сервер;
    • /wp-content/themes/govpress-new/images/GOODWILL.jpg – это и есть текст запроса.

    Теперь можно переходить к написанию кода. Я приведу весь код сразу, целиком. А пояснения будут в комментариях. Готовую обработку можно скачать здесь.

    пример обработки для http запросов

    POST запросы в 1С 8.3

    POST запросы кроме заголовков могут содержать еще и тело. Тем самым они предоставляют гораздо большие возможности, чем GET запросы. Они широко применяются, например, для авторизации на ресурсе и последующих действий. Также с помощью POST запросов можно запускать сложные процессы, зависящие от входящих данных, и так далее. Кроме того, POST запросы бывают двух типов:

    Практический пример я рассматривать не буду, так как область применения POST запросов очень обширна и, как правило, связана со сложными процессами, достойными отдельной разработки. Я дам лишь пример общей схемы работы с такими запросами. Если у Вас возникнут вопросы или затруднения, мы всегда рады ответить на вопросы или выполнить разработку под заказ.

    Итак, отправка POST запроса средствами платформы 1С: Предприятие 8.3 осуществляется следующим образом:

    Вам "multipart/form-data" нужна, я так понимаю ?

    Пару-тройку часов мучений, мелочи жизни :)
    И радуйтесь, что вам не надо "multipart/form-data" разбирать в 1С, только отправлять :)

    Для url-encode используйте "КодироватьСтроку()", и то, не так давно появилась тоже.

    Ну, или просто ЗапуститьПриложение ( curl) делайте из 1С и не мучайтесь так.

    "Если умеете curl пользоваться - то должены знать, как сформировать тело запроса вручную, в виде строки" - видимо нет. Я как раз и не могу разобраться что нужно указать в этом случае.


    у меня xml, multipart/form-data - видимо требование принимающей стороны.

    Ну, несложно догадаться, что именно принимающая сторона придумала такое условие, раз вы сами без понятия, что это.


    "Если умеете curl пользоваться - то должены знать, как сформировать тело запроса вручную, в виде строки" - видимо нет. Я как раз и не могу разобраться что нужно указать в этом случае.

    Ну тогда изучайте, что я ещё могу вам посоветовать, сложного там особо нет ничего, наследие времён становления веба:

    Хотя, если у вас эти файлы не сотнями-тысячами в час идут - реально проще запускать curl будет.

    Ну тогда изучайте, что я ещё могу вам посоветовать, сложного там особо нет ничего, наследие времён становления веба:
    Вообще-то автор опубликовал ПРОЕКТ, а не ветку на форуме. Разницу понимаете?
    На форумах - советы раздают.
    В проектах - оставляют заявки, если по силам решить задачу. Вообще-то автор опубликовал ПРОЕКТ, а не ветку на форуме Вообще-то автор опубликовал ПРОЕКТ, а не ветку на форуме. Разницу понимаете?

    Вам не кажется, что это продолжение старого разговора, в котором мы уже достаточно прояснили позиции друг-друга ? :)

    Уже обсуждали же это, если пытаться из кажого пустяка содрать с заказчика три шкуры, то люди сюда ходить не будут, имеено из-за ощущения, что здесь сидят одни живодёры, мечтащие нажиться на их незнании. Думаю, такой вариант развития событий отнюдь не в интересах ресурса.

    Примеров, когда заказчик просит здесь сделать то, что есть в стандартном фунционале более, чем хватает.

    В данном случае заказчик Я В Н О указал в своей заявке:

    "Вся обработка видимо не нужна, нет понимания как сделать " -F name"."

    То есть, заказчик сам не понимает, что ему нужно, вся суть его впороса в именно в том, как сделать требуемое, но "обработка ему не нужна".

    Ну, наверное, ему нужно моральное сочувствие, подавайте завяки на выполнение :)

    Я с вами согласен, что ему надо было не заявку публиковать, раз ему "обработка не нужна", а вопрос на формуме, но это уже не моя проблема, что он сделал иначе, либо модераторы должны были перенести его заявку туда, но опять же - это не моя беда, я пытаюсь помочь человеку в С Т Р О Г О М соответствии с его запросами, там, где он опубликовал свой запрос.


    В проектах - оставляют заявки, если по силам решить задачу.
    Дело все в том, что это противоречит правилам сайта. Вспомнил, что один раз меня уже банили за ссылку в комментах. Дело все в том, что это противоречит правилам сайта. Вспомнил, что один раз меня уже банили за ссылку в комментах.

    Нужны ли ресурсу такие правила, из-за которых заказчики не будут сюда ходить ?

    Кроме того, помимо буквы закона есть ещё и дух закона, и общепринятая юридическая мудрость чётко рекомендует руководствоваться духом закона, а не его буквой, во избежании принятия абсурдных решений.


    Так вот дух данного ресурса отражён в преамбуле, которая встречает любого зашедшего на него, на первой странице:

    "Главное — это ваше желание получить помощь по 1С. За право ее оказать борются программисты и специалисты 1С из всех стран СНГ, которые делают вам самые выгодные предложения. В итоге вы гарантированно решаете свои задачи по самой приемлемой для Вас цене без посредников, переплат и комиссий. "

    замечательная фраза, не правда ли ? Проникновенная.

    Вот только, если целью ресурса является обязательное сдирание с заказчика денег за любой чих ( а так же за его отсутствие, что бы было не повадно не чихать) - то надо преамубулу переписать, и указать, что целью ресурса является не "помощь", а возмоность содрать с заказчика максимум денег, вне зависимости от его реальных потребностей.

    То есть, грубо говоря, переписать так:

    "Главное — это ваше обязанность заплатить нам много денег за ваши проблемы с 1С. За право вас обобрать борются программисты и специалисты 1С из всех стран СНГ, которые делают вам самые невыгодные предложения. В итоге вы гарантированно решаете свои задачи(или не решаете) по самой неприемлемой для Вас цене без посредников, переплат и комиссий(мы и так с вас три шкуры сдерем, зачем на с кем-то делится). "

    Читайте также: