Простой POST-запрос.

20.12.12

Интеграция - WEB-интеграция

Простой Post-запрос, который максимально просто позволяет отправить серверу данные и получить ответ.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Пост-запрос
.epf 7,07Kb
134 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

В сети, и в том числе на этом сайте, много тем по этому поводу. Содержимое большинства из них громоздки и запутанны. В числе прочего упоминается кодировка отправляемых данных в Base64, использование разделителей для отправки различных данных в одном запросе и т.д. В прилагаемой обработке все упрощено до минимума и "дебри" не рассматриваются. Предназначена для использования в качестве универсальной болванки для реализации более сложного функционала. В качестве примера используется сервис общеизвестной транспортной компании. В пост-запросе оправляется номер накладной, в ответ возвращается xml с информацией о её состоянии. На скрин-шоте реальная накладная (спасибо гуглу) на которой тестировал работоспособность. 

Качать все не обязательно, выкладываю весь код модуля формы:


Процедура КнопкаВыполнитьНажатие(Кнопка)
    Попытка
       
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
       
WinHttp.Option(2,"utf-8");
       
WinHttp.Open("POST","http://public.services.dellin.ru/tracker/XML/",0);
       
WinHttp.SetRequestHeader("Accept-Language", "ru");
       
WinHttp.SetRequestHeader("Accept-Charset","utf-8");
       
WinHttp.setRequestHeader("Content-Language", "ru");
       
WinHttp.setRequestHeader("Content-Charset", "utf-8");
       
WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
       
ПараметрыПОСТ = "rwID=" + СокрЛП(НомерНакладной);
       
WinHttp.Send(ПараметрыПОСТ);
       
ТекстОтвета = WinHttp.ResponseText();
    Исключение
       
Сообщить(ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Где "НомерНакладной" - это строковое поле ввода на форме, куда вводите номер накладной (например, Сю-00090170085), а "ТекстОтвета" - это многострочное строковое поле, куда выводим результат. 

После комментария Den_D решил добавить тоже самое, только встроенными средствами. Обратите внимание на амперсанд перед параметром - сэкономите время и нервы. Это обычная "особенность" 1С, которая решила что неважно сколько у вас там параметров - ставьте амперсанд ВСЕГДА ибо мы так хотим.

Обработку обновил.

Ну и код для нежелающих качать выкладываю. Надеюсь при этом на вашу социальную "плюсоответственность".


Процедура ОсновныеДействияФормыВыполнить2(Кнопка)
   
Сервер = "public.services.dellin.ru";
   
Ресурс = "/tracker/XML/";
   
HTTP =  Новый HTTPСоединение(Сервер);
   
ФайлЗапроса = ПолучитьИмяВременногоФайла();
   
ТекстовыйФайл = Новый ТекстовыйДокумент;
   
ТекстовыйФайл.УстановитьТекст("&rwID=" + СокрЛП(НомерНакладной));
   
ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8);
   
ФайлРезультата = ПолучитьИмяВременногоФайла();
   
ЗаголовокHTTP = Новый Соответствие();
   
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
   
ЗаголовокHTTP.Вставить("Accept-Language", "ru");
   
ЗаголовокHTTP.Вставить("Accept-Charset", "utf-8");
   
ЗаголовокHTTP.Вставить("Content-Language", "ru");
   
ЗаголовокHTTP.Вставить("Content-Charset", "utf-8");
   
HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP);
   
Ответ = Новый ТекстовыйДокумент();
   
Ответ.Прочитать(ФайлРезультата, КодировкаТекста.UTF8);
   
ТекстОтвета = Ответ.ПолучитьТекст();
   
УдалитьФайлы(ФайлЗапроса);
   
УдалитьФайлы(ФайлРезультата);
КонецПроцедуры

Исключения было лень писать... Но работоспособность проверял.

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

WEB-интеграция Разработчик Аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    7313    33    4    

34

WEB-интеграция Анализ продаж Системный администратор Разработчик Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

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

60000 руб.

07.05.2019    44342    76    45    

32

Сайты и интернет-магазины WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    25374    41    26    

30

WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStars разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.

20740 руб.

13.05.2025    2819    4    0    

7

Универсальные функции 1С 8.3 1С:Документооборот Россия Платные (руб)

ДО+ — расширение конфигурации, в котором собран постоянно пополняемый набор из 33 востребованных доработок для 1С:Документооборот КОРП 3.0: согласование задач прямо из мессенджеров MAX и Telegram, отзыв согласования и исполнения, гибкие повторные круги, эскалация с точностью до минут, контроль исполнительской дисциплины, выгрузка вложений в ZIP и склейка PDF, реестр документов в Excel, проверка дублей контрагентов и регистрационных номеров. Каждая возможность активируется отдельным флажком в режиме предприятия — включается только то, что нужно конкретной организации. Список функций расширяется с каждым релизом — текущая версия 2.1.0. Режим AddOn: типовая конфигурация не модифицируется, обновления ДО ставятся штатно, дополнительные лицензии и внешние компоненты не требуются. Внедрение силами администратора — около часа.

30000 руб.

09.07.2026    992    1    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Den_D 54 19.12.12 16:04 Сейчас в теме
Пытался реализовать отправку GET и POST запросов штатными средствами 1С ничего не получилось. На просторах интернета нашел такую же схему. В любом случае спасибо, теперь в поиске на инфостарте людям можно будет легко найти эти несколько полезных строк.
3. Den_D 54 28.03.13 16:10 Сейчас в теме
(2) dour-dead, да я смотрел и эту обработку, но вариант этого автора мне нравится больше
4. boffart 301 15.04.13 07:52 Сейчас в теме
Рекомендую использовать таймауты в запросах к серверу.
Иначе 1С "Замрет" на долго.
CaIIIkaDer; +1 – Ответить
5. ineshyk 12.07.13 00:55 Сейчас в теме
Подскажите, как реализовать такой POST запрос в 1С?

POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded

code=4/v6xr77ewYqhvHSyW6UJ1w7jKwAzu&
client_id=8819981768.apps.googleusercontent.com&
client_secret={client_secret}&
redirect_uri=https://oauth2-login-demo.appspot.com/code&
grant_type=authorization_code

делаю как описано в статье, выдает ошибку 302.
Zarikus26; Yahont90; Dim.Gadget; strafer; +4 – Ответить
6. skyp 36 13.07.13 13:16 Сейчас в теме
Автор молодец! С год назад пытался такое реализовать в 1С8 и не смог, несмотря на то, что ранее уже сделал это в 1С77. А здесь - просто, и с указанием подводных камней, привычных уже в 1С с ее зачаточной "документацией" по НТТР...
7. LexSeIch 212 31.07.13 12:36 Сейчас в теме
Мир этому дому!
Плюс за статью и открытость публикации кода.
8. quick 587 13.12.13 12:21 Сейчас в теме
Все это хорошо, пока под виндой.
Походу пора нормально прикручивать питон к 8-ке под всеми ОС, тогда и головная боль с такими задачами отпадет.
9. opx 698 24.01.14 14:17 Сейчас в теме
Поумничаю немного:

Соединение = Новый HTTPСоединение("public.services.dellin.ru";);
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
Запрос = Новый HTTPЗапрос("/tracker/XML/",ЗаголовокHTTP);
Запрос.УстановитьТелоИзСтроки("&rwID=" + СокрЛП(НомерНакладной));
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ОтветВВидеСтроки = Ответ.ПолучитьТелоКакСтроку("UTF-8");

Быстрее, проще веселее!
user662573_rx-tx; maksa2005; METAL; s0u1; sasha777666; Maxis; tinkerbell; vovial; avsladkov; Alexander.Shvets; TreeDogNight; savinsva; Spacer; pallid; DrAku1a; rbbs; AlX0id; daryz; griffer; +19 – Ответить
14. sr5 02.02.16 13:53 Сейчас в теме
(9) opx, Веселее, но для 8.2.14 не подходит, там еще нет HTTP-команд (
30. METAL 307 07.10.21 16:03 Сейчас в теме
(9) Большое человеческое спасибо! Извёлся с этим x-www-form-urlencoded , уже успел и вручную пособирать тело по кускам по формату multipart/form-data с boundary = всё никак. А по Вашему варианту - наконец, взлетело! Вот уж действительно "Быстрее, проще, веселее!". Респект!

PS Осталось с кодировкой ответа разобраться....
Пока что ответ приходит в виде
�������;"���� � �����";���;�������;"�������� ������";����;����������;�������
6;"07-10-2021 15:51:49";112;��;"������� ����";600.00;1.00;600.00
6;"07-10-2021 15:46:25";112;��;"������� ����";600.00;1.00;600.00
6;"07-10-2021 14:45:58";155;��;������;100.00;1.00;100.00
6;"07-10-2021 14:44:03";158;���;����;100.00;0.00;0.00
6;"07-10-2021 14:21:09";112;��;"������� ����";600.00;1.00;600.00
6;"07-10-2021 14:20:23";122;��;�������;1000.00;1.00;1000.00
6;"07-10-2021 14:18:24";157;���;����;100.00;0.00;0.00
6;"07-10-2021 14:17:04";141;��;"������ � �������";1000.00;1.00;1000.00
6;"07-10-2021 14:09:54";112;��;"������� ����";600.00;1.00;600.00
6;"07-10-2021 13:55:43";134;��;"����o���� � ���������";1100.00;1.00;1100.00
UPD Проблемы с кодировкой удалось победить сохранением в файл, то есть вместо..
HTTPОтвет = Соединение.ОтправитьДляОбработки(Запрос);
ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();

..вот так:
HTTPОтвет = Соединение.ОтправитьДляОбработки(Запрос, ИмяФайлаОтвета);
10. daryz 04.08.14 09:19 Сейчас в теме
Делаю все как пишет "opx":

Соединение = Новый HTTPСоединение("sambonn.ru");
Запрос = Новый HTTPЗапрос("/admin/import/");
Запрос.УстановитьТелоИзСтроки("?action=ping");
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ОтветВВидеСтроки = Ответ.ПолучитьТелоКакСтроку("UTF-8");
Сообщить("Ответ сата: " + ОтветВВидеСтроки);

Ничего не выводится, а должен быть ответ "0" или "1". В чем подвох?
11. 7OH 90 03.10.14 10:56 Сейчас в теме
При работе с HTTPS методы с HTTPСоединение выдают ошибку про сертификаты.
Куча методик с разных сайтов (про cacert.pem) увы не помогла.
А вот с WinHttp.WinHttpRequest всё просто полетело.
Спасибо за строки.
@Sonya; Spacer; +2 – Ответить
16. binex 280 27.02.16 08:29 Сейчас в теме
(11) 7OH,

ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
HTTPСоединение = Новый HTTPСоединение("dip.7cont.ru",,,,,,ЗащищенноеСоединение);
user662573_rx-tx; siliconvalet; +2 – Ответить
12. mar_a 25 24.09.15 10:25 Сейчас в теме
Есть идея переделать свое приложение ( https://infostart.ru/public/376254/ ) по данному методу (так сказать без установки дополнительного СОМ объекта (NestNet45.dll) -на уже встроенном)
И так авторизацию по DIGEST проходит без вопросов, но результат отдает сервер (внешний)
в кодировке UTF-8.
1C 8.2 отображает русские символы в виде такой беды:
КРЕД�Т КАРТКОЮ

символьно похоже на UTF-8, перекодировка на лету мне не известна (может кто и подскажет)
Вот код который кидаю в хедерах но он картину не меняет

WinHttp.SetRequestHeader("Accept-Language", "ru");
        WinHttp.SetRequestHeader("Accept-Charset","utf-8");
        WinHttp.setRequestHeader("Content-Language", "ru");
        WinHttp.setRequestHeader("Content-Charset", "utf-8");
        WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");


ставил кодовую страницу как win1251, cp1251, koi8R(U) и т.д. результат не меняется
Причем строка WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
портит картину с Digest авторизацией...
если ее нет - то авторизация проходит с внешним сервером на УРА!
Но кодировка UTF-8 в 1С 8.2 коректно не отображается.
Как только строку setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8") вставляем - то 501 ошибка из вне (с HTTP сервака) приходит.

Вопрос банальный - кто и как получал человеческую кирилицу которая адекватно отображается в 1С 8.2
хочу получить универсальный инструмент для работы и 8.х и 7.7(на будующее).

Заранеевсем спасибо.
13. VlaMir 19.01.16 22:22 Сейчас в теме
Спасибо автору, хотел добыть QR с "chart.googleapis.com/chart",
метод с GET и ПолучитьCOMОбъект("","Microsoft.XMLHTTP");
не проходил с передачей большого объема кодирования,
с запросом POST не получилось не понимал запрос ни в какую, сам тупил,
наткунлся на Вашу статью оказалось не правильно передавал параметры.
Ваш метод попробовал ч.з. COMОбъект("WinHttp.WinHttpRequest.5.1"), все окей.
Хотя сейчас использую OcvitaBarcode.
15. sr5 02.02.16 14:09 Сейчас в теме
Вариант 1 на 8.2.14 работает, спасибо автору...
17. FlagmanGK 03.05.16 14:28 Сейчас в теме
Подскажите, где ошибка?
	WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); 
	WinHttp.Option(2,"UTF-8");
	
	WinHttp.Open("POST","http://api.site.ru/rpc");
	WinHttp.SetRequestHeader("Content-Type", "application/json; charset=utf-8");
	WinHttp.Send(СформироватьСтрокуJSON(СтруктураЗапроса));

Когда отправляю так, то все работает...
но если отправляю через http соединение
	Соединение = Новый HTTPСоединение("api.site.ru", , , , , ложь);    	
	ЗаголовокHTTP = Новый Соответствие();                 
	ЗаголовокHTTP.Вставить("Content-Type", "application/json; charset=utf-8");
	ФайлЗапроса = КаталогВременныхФайлов()+"1";
	файл = новый ЗаписьТекста(ФайлЗапроса);
	Файл.ЗаписатьСтроку(ОповещениеВК.СформироватьСтрокуJSON(СтруктураЗапроса));
	файл.Закрыть();
	ФайлРезультата=ПолучитьИмяВременногоФайла();
	Соединение.ОтправитьДляОбработки(ФайлЗапроса,"/rpc", 
                           ФайлРезультата, ЗаголовокHTTP);
Показать


То выдает ошибку
Соединение.ОтправитьДляОбработки(ФайлЗапроса,"/rpc",
по причине:
Ошибка при выполнении файловой операции '/rpc'
по причине:
Ошибка работы с Интернет: Ошибка доступа к ресурсу. Путь не найден: (400). SyntaxError: Unexpected token ?
at Object.parse (native)
at /var/www/v2/corev2/node_modules/express/node_modules/connect­/lib/middleware/json.js:75:25
at IncomingMessage.onEnd (/var/www/v2/corev2/node_modules/express/node_modules/connect­/node_modules/raw-body/index.js:109:7)
at IncomingMessage.g (events.js:199:16)
at IncomingMessage.emit (events.js:104:17)
at _stream_readable.js:908:16
at process._tickDomainCallback (node.js:381:11)
по причине:
Ошибка работы с Интернет: Ошибка доступа к ресурсу. Путь не найден: (400)

Показать
18. Tapochki-tmn 43 23.05.17 15:45 Сейчас в теме
Поделюсь из своего личного опыта.
Вдруг кому пригодится.

Получал от сервера ошибку 400, типа, "Internal server error".
Причем, именно при запросе из 1С. Другими средствами запрос обрабатывался.

В результате оказалось вот в чем дело:

//Вызывало ошибку:
//Запрос.УстановитьТелоИзСтроки(ТекстPOSTЗапроса, КодировкаТекста.UTF8);

//Взлетело:
Запрос.УстановитьТелоИзСтроки(ТекстPOSTЗапроса, "CESU-8");

//"CESU-8" - Кодировка CESU-8 это и есть UTF-8 без BOM,
//приходится прописывать кодировку текстом, т.к. в текущей версии платформы
//или из за режима совместимости третий параметр метода УстановитьТелоИзСтроки(ТекстPOSTЗапроса,КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать) не доступен,
//а в КодировкаТекста отсутствует вид кодировки "CESU-8"
shevchen88; ByStep; papche; +3 – Ответить
24. papche 679 27.08.18 17:16 Сейчас в теме
(18)
CESU-8
Большое спасибо, пригодилось!
25. BratLi 19.02.19 12:26 Сейчас в теме
19. Dimitrij 20.03.18 10:41 Сейчас в теме
Добрый день,

Столкнулся с проблемой.

$data = array( 'secret' => '972725f8566849d3a1b26g0d0a15fdc1', 'id' => 'CE100006045LV', ); Это на PHP.

В 1с это выглядит Запрос.УстановитьТелоИзСтроки("secret=пароль&id=номеркоробки");

Но как мне передать:

$data = [ 'secret' => '972725f8566849d3a1b26g0d0a15fdc1', 'parcels' => [ 'internalID1' => [ 'type' => 'Ie', 'name_surname' => 'имя', 'city' => 'Jelgava', 'zipcode' => 'LV-1234', 'phone' => '21234567', 'country_id' => 4, 'multiparcel'=>1, 'group_uid'=>572725f8-5668-49d3-a1b2-620d0a15fdc6 ],

Не понимаю как корректно это все написать. Пробовал ЧтениеJSON, файлами... не получается.

Заранее спасибо!
20. mar_a 25 22.03.18 14:53 Сейчас в теме
secret=972725f8566849d3a1b26g0d0a15fdc1&parcels[internalID1][type]=Ie&parcels[internalID1][name_surname]=имя&....
..&group_uid=572725f8-5668-49d3-a1b2-620d0a15fdc6
Dimitrij; +1 – Ответить
22. Dimitrij 23.03.18 14:15 Сейчас в теме
(20) Большое спасибо!
21. пользователь 22.03.18 15:53
Сообщение было скрыто модератором.
...
23. stas84 10 22.06.18 10:13 Сейчас в теме
18 -> то что нужно. Спасибо большое
26. BratLi 19.02.19 12:27 Сейчас в теме
(18) Спасибо, заработало!
27. viki_glebova 23.12.20 16:26 Сейчас в теме
Здравствуйте! Подскажите, пожалуйста, как сделать авторизацию через этот метод? Как прописать логин и пароль?
28. chemezov 50 26.04.21 22:40 Сейчас в теме
(27) в теле запроса &login=login&password=password
29. Даня 9 25.05.21 13:39 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация