Как перевести запрос curl в запрос на 1с
В этом разделе будем использовать 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= и далее адрес картинки:
Вот этот адрес и нужно скопировать. В разных браузерах по-разному можно это сделать, в Опере это проще всего сделать, перейдя сначала в режим редактирования (правая кнопка мышки – Edit attribute).
Теперь разберем ее на две части:
-
– это наш сервер;
- /wp-content/themes/govpress-new/images/GOODWILL.jpg – это и есть текст запроса.
Теперь можно переходить к написанию кода. Я приведу весь код сразу, целиком. А пояснения будут в комментариях. Готовую обработку можно скачать здесь.
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С из всех стран СНГ, которые делают вам самые невыгодные предложения. В итоге вы гарантированно решаете свои задачи(или не решаете) по самой неприемлемой для Вас цене без посредников, переплат и комиссий(мы и так с вас три шкуры сдерем, зачем на с кем-то делится). "
Читайте также: