1с как через post метод передать массив
Перейти к содержимому

1с как через post метод передать массив

  • автор:

1с как через post метод передать массив

Подскажите как это сделать через пост запрос:

$data = array(
‘login’ => ‘client1’, // логин (обязательное поле)
‘token’ => ‘hash.token’, // код авторизации (обязательное поле)
‘comments_client’ => ‘comment к накл’, //комментарий к накладной
‘punkt_id’ => ‘Moskovskaya-A16’, // идентификатор ПВ (Moskovskaya-A16, Pionerskaya-K15k2)

‘orders’ => array(
// Заказ N2047 стоимостью 123р
array(
‘sku’ => ‘2047’, //номер заказа (обязательное поле)
‘price’ => 123, //сумма к оплате клиентом (обязательное поле)
‘buyer_phone’ => ‘123-34-45’, //тел. клиента
‘buyer_fio’ => ‘Владимир Петров’, //имя клиента
‘comment’ => ‘comment1’ //коммент к заказу
),
array(
‘sku’ => ‘2049’,
‘price’ => 1234,
‘payed’ => 1, //признак, что заказ предоплачен
‘buyer_phone’ => ‘123-56-89’,
‘buyer_delivery_needed’ => 1, // нужна доставка
‘buyer_address’ => ‘адрес’, // адрес доставки
‘buyer_delivery_time’ => ‘пожелания к дате/времени доставки’, // пожелания к дате/времени доставки
‘comment’ => ‘comment1’ //коммент к заказу
),
)
);

$post_body = http_build_query($data);
echo $post_body;

как передать параметры которые являются массивом?
пример кода можно?

Так посмотреть, как работает функция http_build_query() и оттуда уже плясать.

Пример #3. Пример использования http_build_query() с многомерными массивами.
http://php.net/manual/ru/function.http-build-query.php

так из 1С это как передать? )
(6) А что, у тебя пост 27 в Отправка POST запроса к 1С враги вырезали?

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

(8) Фига се поворот событий.
просто нет у меня сейчас времени разбираться, сможешь помочь?
(10) Хм. Ну хоккей. Давай попробуем. Стучись в скайп или напиши на почту.

если это простой параметр, то можно сделать так:
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();

а если параметр массив?
в пхп массив это строка

как передать блок «orders» — там массив из нескольких документов должен быть, как разделить разные документы?

как выглядит тело POST запроса:

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

&orders%5B0%5D%5Bprice%5D=123 вопрос что это «%5B0%5D%5B» между orders и price для одного заказа оно одинаково, т.е. все заказы идут в строку с каким то разделителем между их параметрами

Боюсь, что параметр типа массив передать невозможно. Даже через XML, даже через SOAP. Во всяком случае два дня гугленья и изучение примеров на ИТС результата не дали. Остался одиноко висеть и мой вопрос на Мисте..

структра через XML передается без проблем, у параметра вложенные параметры со своими значениями, так я уже делал обмен заказами с DPD, но тут немного по другому .

(17) >> вопрос что это «%5B0%5D%5B» между orders и price для одного заказа оно одинаково

Мде. В (12) ты сам установил:
>>WinHttp.setRequestHeader(«Content-type», «application/x-www-form-urlencoded; charset=utf-8»);

А теперь так девственно. А «что это» (с).

Ну ладно. Переведу за тебя. Для всех твоих параметров, ты устанавливаешь тип x-www-form-urlencoded, при этом кодируешь их в кодировке utf-8. А т.к. у тебя массив, то сюрприз, надо ж как-то определить порядковый номер элемента массива. Как? —> «что это» (с).

(20) это не я, это был однин из примеров из инета )
я нев веб программист для меня это темный лес )
(20) так как правильно передать здесь элементы массива?

(23) Создаешь обычный файл. Кодируешь строчку параметров ручками. Затем набираешь в синтакст-помошнике HTTPСоединение и долго и нудно читаешь пример по методу ОтправитьДляОбработки. Потом не забудь написать о результатах. Потомки, нагуглившие это поклонются тебе 🙂

(24) >Затем набираешь в синтакст-помошнике HTTPСоединение и долго и нудно читаешь пример по методу ОтправитьДляОбработки

да знаю я про это, вопрос был в том как правильно параметры массива передать

(25) я надеюсь, я ответил как и ты понял ответ. Не так ли? 🙂 Нет больше вопроса «а что это?» (с) Или есть? :)))

(26) только не считай себя умником, так другие знают то о чем ты даже представления не имеешь))), я же сказал веб не моя область

(27) кстати, отлично поблагодарил за единственный дельный совет в ветке. Пожалуйста, если что.

(28) за совет спасибо, но не зазнавайся ), но я как раз нехотел все кодировать ручками поэтому и возникла тема как передавть параметры массива, все остальное было и так ясно примеров полно.

ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправки);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»login»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»login»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(login);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»token»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»token»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(token);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»comments_client»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»comments_client»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(comments_client);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»punkt_id»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»punkt_id»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(punkt_id);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»orders[» + Строка(Индекс) + «][sku]»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(Формат(Заказ.Номер, «ЧЦ=11»));
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»orders[» + Строка(Индекс) + «][price]»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(Формат(Заказ.Оплата, «ЧРД=.; ЧН=0; ЧГ=0»));
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»orders[» + Строка(Индекс) + «][payed]»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(Формат(Заказ.Предоплачен, «БЛ=0; БИ=1»));
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»orders[» + Строка(Индекс) + «][buyer_phone]»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(Заказ.Телефон);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»orders[» + Строка(Индекс) + «][buyer_fio]»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(Заказ.КонтактноеЛицо);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);
ФайлОтправки.ЗаписатьСтроку(«content-disposition: form-data; name=»»orders[» + Строка(Индекс) + «][comment]»»» + Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку(Заказ.ДополнительнаяИнформация);
ФайлОтправки.ЗаписатьСтроку(«—My1cV8bNdr»);

ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить(«Content-Type», «multipart/form-data; boundary=My1cV8bNdr»);

Попытка
Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки, HTTPАдресСкрипта, ИмяФайлаОтвета, ЗаголовокHTTP);
Исключение
Сообщить(«Не удалось получить данные с сервера.Проверьте правильность адреса сервера,»
+ Символы.ПС + «а также настройки подключения к Интернет.»);
Возврат;
КонецПопытки;

Http запросы GET и POST в языке 1С 8. Примеры работы

В статье приводятся практические примеры работы с самыми часто используемыми HTTP запросами средствами языка 1С – GET и POST.

Общая информация

Для различного рода интеграций, обменов данными и взаимодействия между разными системами широко используется протокол http, и платформа 1С имеет ряд инструментов и объектов для работы с этим протоколом.

Основные объекты языка 1С, предназначенные для работы с протоколом http – HTTPСоединение, HTTPЗапрос и HTTPОтвет. Для организации работы через прокси-сервер используется объект ИнтернетПрокси, а для создания защищенного https-соединения существует объект ЗащищенноеСоединениеOpenSSL. Есть еще ряд объектов, которые могут применяться при работе с протоколом HTTP, но они используются достаточно редко, а потому в данной статье не рассматриваются.

HTTPСоединение отвечает за создание соединения с сервером по протоколу HTTP. Свойства этого объекта позволяют задать параметры авторизации, такие как логин, пароль и признак аутентификации ОС, а также параметры подключения – адрес сервера, порт, прокси, таймаут, и защищенное соединение. Методы объекта HTTPСоединение повторяют основные методы HTTP, такие как Get, Post, Put, Delete и др.

HTTPЗапрос позволяет задать заголовки, адрес запрашиваемого ресурса и тело запроса. Методы данного объекта предназначены для различных способов получения и установки тела запроса.

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

  • Список заголовков HTTP
  • Список кодов состояния HTTP

ИнтернетПрокси, как следует из названия, используется для указания настроек прокси-сервера. Для каждого протокола можно независимо указать параметры прокси-сервера при помощи метода Установить().

ЗащищенноеСоединениеOpenSSL используется для создания защищенного соединения OpenSSL. Есть возможность указать сертификат клиента и/или удостоверяющего центра, но в большинстве случаев, при организации доступа к обычным сайтам по протоколу HTTPS, сертификаты указывать не требуется.

Http запрос с использованием защищенного соединения

Защищенное подключение используется для соединения с сервером по протоколу https. В случае, если запрашиваемый ресурс требует наличия сертификатов, существует возможность указать как клиентский сертификат, так и сертификаты удостоверяющих центров. Есть несколько нюансов, на которые стоит обратить внимание.

Объект клиентского сертификата СертификатКлиентаФайл (с приватным ключом), загружается из файла с форматом :
*.PFX; *.P12 – файл сертификата формата P12;
*.PEM – файл сертификата формата PEM.
по умолчанию – файл сертификата формата PEM.

Объект клиентского сертификата СертификатКлиентаWindows загружается из системного хранилища сертификатов операционной системы MS Windows.

// Для большинства интернет-сайтов сертификаты указывать не требуется. // При необходимости следует задать сертификат для клиента и/или для удостоверяющих центров. // ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows()); ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(); БезопасноеСоединение = Новый HTTPСоединение("yandex.ru",443,,,,,ЗащищенноеСоединение); Ответ = БезопасноеСоединение.Получить(Новый HTTPЗапрос("/")); Если Ответ.КодСостояния = 200 Тогда Сообщить(Ответ.ПолучитьТелоКакСтроку()); КонецЕсли; 

Использование заголовков в http запросах в языке 1С

Для передачи кукис (Cookie), кэширования, хранения данных пользовательской сессии, выполнения запроса с указанием конкретного браузера, и для многих других целей, используются заголовки http запросов. Заголовки – это обычное соответствие, с парами Ключ: Значение. Помимо стандартных заголовков разработчик может передавать свои собственные, если это предусмотрено логикой принимающего сервера.

Соединение = Новый HTTPСоединение("yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL()); Заголовки = Новый Соответствие; Заголовки.Вставить("User-Agent", "Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"); Заголовки.Вставить("Cookie", "id=12345"); Ответ = Соединение.Получить(Новый HTTPЗапрос("/", Заголовки));

Получить страницу сайта при помощи http запроса GET

Get-запросу в языке 1С соответствует метод Получить(). Для большинства современных сайтов необходимо использовать защищенное соединение.

// Подключение к сайту 1c.alexcode.ru. // Новый HTTPСоединение(, , , , , , , ) СоединениеHTTP = Новый HTTPСоединение("1c.alexcode.ru", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL()); // Получение текста главной страницы через запрос. ЗапросHTTP = Новый HTTPЗапрос("/"); // Можно указать любую нужную страницу например, "/about" или "/contacts" Ответ = СоединениеHTTP.Получить(ЗапросHTTP); // Get запрос Если Ответ.КодСостояния = 200 Тогда Сообщить(Ответ.ПолучитьТелоКакСтроку()); //получим HTML-код страницы  Иначе Сообщить("Код ответа: "+Ответ.КодСостояния); //анализируем код состояния и делаем выводы КонецЕсли;

Сохранить картинку с сайта через GET-запрос

При помощи http протокола можно получать не только текстовые данные (html, json, xml и т.п.), но и другие объекты, доступные по url адресу – медиа-файлы, картинки и другие ресурсы. Рассмотрим пример получения логотипа компании 1С:

Соединение = Новый HTTPСоединение("static.1c.ru"); Запрос = Новый HTTPЗапрос("/images/logo.png"); // Вариант 1. Укажем имя выходного файла. // Используются обычные слэши ПутьДляСохранения = "C:/1c_logo.png"; Ответ = Соединение.Получить(Запрос, ПутьДляСохранения); // Вариант 2. Получим из ответа двоичные данные // В Windows используются обратные слэши, в Unix-подобных системах (Linux) - обычные слэши // После их можно обработать, сохранить в ХранилищеЗначений в базу данных, // либо сохранить их также в файл ПутьДляСохранения = "C:\1c_logo_2.png"; Ответ = Соединение.Получить(Запрос); Ответ.ПолучитьТелоКакДвоичныеДанные().Записать(ПутьДляСохранения); 

Как обработать перенаправление (redirect) http запроса в 1С

Переадресация при http запросе может возникнуть по разным причинам. Самые популярные:

  • смена адреса запрашиваемого ресурса (например, изменили название статьи, и вместе с ним – адрес)
  • переадресация с www
  • редирект с http на https

При переадресации сервер возвращает в заголовках параметр Location, в котором указано новое назначение.. Далее разработчик может проанализировать эту строку, выделить сервер, путь к ресурсу, логин и пароль, и сформировать новый запрос. Следует иметь в виду, что редиректов может быть несколько, и переадресация будет идти по цепочке. Рассмотрим простой пример переадресации с незащищенного соединения на безопасное по протоколу https:

СоединениеHTTP = Новый HTTPСоединение("1c.alexcode.ru", 80); ЗапросHTTP = Новый HTTPЗапрос("/"); Ответ = СоединениеHTTP.Получить(ЗапросHTTP); Если Ответ.КодСостояния = 200 Тогда Сообщить(Ответ.ПолучитьТелоКакСтроку()); //получим HTML-код страницы  ИначеЕсли Ответ.КодСостояния = 301 Тогда // постоянная переадресация Сообщить(Ответ.Заголовки.Получить("Location")); //куда нас отправляют // СтруктураURI - служебная функция, которая раскладывает адресную строку // и возвращает удобную структуру с параметрами подключения. URI = СтруктураURI(Ответ.Заголовки.Получить("Location")); Если URI.Схема = "https" Тогда // обработаем перенаправление на защищенное соединение БезопасноеСоединение = Новый HTTPСоединение(URI.ИмяСервера,443,,,,,Новый ЗащищенноеСоединениеOpenSSL()); //путь к ресурсу также возьмем из структуры URI Ответ = БезопасноеСоединение.Получить(Новый HTTPЗапрос(URI.ПутьНаСервере)); Если Ответ.КодСостояния = 200 Тогда Сообщить(Ответ.ПолучитьТелоКакСтроку()); КонецЕсли; КонецЕсли; Иначе Сообщить("Код ответа: "+Ответ.КодСостояния); КонецЕсли;
&НаКлиенте Функция СтруктураURI(Знач СтрокаURI) Экспорт СтрокаURI = СокрЛП(СтрокаURI); Схема = ""; Позиция = Найти(СтрокаURI, "://"); Если Позиция > 0 Тогда Схема = НРег(Лев(СтрокаURI, Позиция - 1)); СтрокаURI = Сред(СтрокаURI, Позиция + 3); КонецЕсли; СтрокаСоединения = СтрокаURI; ПутьНаСервере = ""; Позиция = Найти(СтрокаСоединения, "/"); Если Позиция > 0 Тогда ПутьНаСервере = Сред(СтрокаСоединения, Позиция + 1); СтрокаСоединения = Лев(СтрокаСоединения, Позиция - 1); КонецЕсли; СтрокаАвторизации = ""; ИмяСервера = СтрокаСоединения; Позиция = Найти(СтрокаСоединения, "@"); Если Позиция > 0 Тогда СтрокаАвторизации = Лев(СтрокаСоединения, Позиция - 1); ИмяСервера = Сред(СтрокаСоединения, Позиция + 1); КонецЕсли; Логин = СтрокаАвторизации; Пароль = ""; Позиция = Найти(СтрокаАвторизации, ":"); Если Позиция > 0 Тогда Логин = Лев(СтрокаАвторизации, Позиция - 1); Пароль = Сред(СтрокаАвторизации, Позиция + 1); КонецЕсли; Хост = ИмяСервера; Порт = ""; Позиция = Найти(ИмяСервера, ":"); Если Позиция > 0 Тогда Хост = Лев(ИмяСервера, Позиция - 1); Порт = Сред(ИмяСервера, Позиция + 1); КонецЕсли; Результат = Новый Структура; Результат.Вставить("Схема", Схема); Результат.Вставить("Логин", Логин); Результат.Вставить("Пароль", Пароль); Результат.Вставить("ИмяСервера", ИмяСервера); Результат.Вставить("Хост", Хост); Результат.Вставить("Порт", ?(Порт > "", Число(Порт), Неопределено)); Результат.Вставить("ПутьНаСервере", ПутьНаСервере); Возврат Результат; КонецФункции 

Использование прокси сервера для http запросов в 1С

Интернет-прокси может использоваться для соединения по различным протоколам: http, https, ftp и ftps. Для каждого протокола необходимо вызвать метод Установить() с указанием нужных параметров – логина, пароля, адреса Proxy-сервера и т.д.

 Прокси = Новый ИнтернетПрокси; Прокси.Установить("http", "hostname", 8000, "login", "password"); //Прокси.Установить("https", "hostname", 8000, "login", "password"); Соединение = Новый HTTPСоединение("example.com",,,,Прокси); Ответ = Соединение.Получить(Новый HTTPЗапрос);

Использование http запросов типа POST в 1С 8

Запросы Post широко применяются в том случае, когда нужно передать на сервер какие-то данные для дальнейшей обработки – провести авторизацию, загрузить файл, передать большой массив данных в качестве параметров, и т.п.

Get запросы также имеют возможность параметризации, но длина адресной строки ограничена 2048 символами. Поэтому, если, например, вам нужно передать в качестве параметров 1000 наименований номенклатуры или 1000 электронных адресов сотрудников, для этого отлично подойдет post запрос. Post запрос отличается от запроса get тем, что помимо строки запроса и заголовков, имеет еще и тело запроса.

В языке 1С запросу POST соответствует метод ОтправитьДляОбработки(). Средствами языка 1С тело запроса может быть установлено из файла, из строки либо из двоичных данных.

Тип передаваемых данных указывается заголовком Content-Type

Передача данных методом POST с использованием JSON

Добрый день. Встал очень не приятный вопрос связаный с передачей данных на сервер. Данную конструкцию тестировал в postman и все работало как надо, но 1с просто не поддается мне в этом вопросе. Если коротко выполнение данного куска кода возвращает мне 404 ошибку и файл ответ огромного содержания, его я так же приложу. Из него можно сделать вывод, что проблема в токене «mData=», но на что бы я его не заменял код ошибки не меняется. Буду рад любым советам и идеям.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
ЗаписьJSON = Новый ЗаписьJSON; тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина); ЗаписьJSON.УстановитьСтроку(тПараметрыJSON); МассивДанныхJSON = Новый Массив; СтруктураДанныхJSON = Новый Структура; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл тДанные = Новый Структура; тДанные.Вставить("fio", Строка(ВыборкаДетальныеЗаписи.Сотрудник)); тДанные.Вставить("c1id", ВыборкаДетальныеЗаписи.СотрудникКод); ГУИД = Строка(ВыборкаДетальныеЗаписи.Сотрудник.УникальныйИдентификатор()); тДанные.Вставить("working", ИСТИНА);; тДанные.Вставить("objectId", ГУИД); тДанные.Вставить("dateOfReception", ЗаписатьДатуJSON(ВыборкаДетальныеЗаписи.Дата, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.УниверсальнаяДата)); МассивДанныхJSON.Добавить(тДанные); КонецЦикла; СтруктураДанныхJSON.Вставить("test", МассивДанныхJSON); ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON); СтрокаJS = ЗаписьJSON.Закрыть(); ФайлОтвета = "C:\Users\user\Desktopтветы\answer.txt"; HTTPСоединение = Новый HTTPСоединение(АдресСервера); запросPOST = Новый HTTPЗапрос("/rest/data/entity/"+ ГУИД + "?formId=da57377d-f8f3-3242-9b4c-bfd92005794d"); запросPOST.Заголовки.Вставить("Content-type", "application/json"); запросPOST.Заголовки.Вставить("Cookie", КукиДляВхода); запросPOST.УстановитьТелоИзСтроки("mData="+СтрокаJS,"windows-1251",ИспользованиеByteOrderMark.НеИспользовать); Попытка HTTPСоединение.ОтправитьДляОбработки(запросPOST, ФайлОтвета); Результат = HTTPСоединение.Получить(запросPOST); Сообщить("Нам вернули код: " + Результат.КодСостояния); Исключение #Если клиент Тогда Сообщить(ОписаниеОшибки()); #КонецЕсли КонецПопытки;

Изображения

Вложения

answer.txt (10.1 Кб, 12 просмотров)

Сериализовать массив для POST запроса

Подскажите функцию для POST запроса
Дарова банда!) Задача до безобразия простая: index.php <?php session_start(); $_SESSION =.

Отправка POST запроса для авторизации
Здравствуйте, хочу авторизоваться на сайте(https://giseo.rkomi.ru/about.html). Посмотрел в Chrome.

Собрать данные для post-запроса?
Всем привет! 🙂 Ребят, выручайте, уже неделю бьюсь. Нужно залогиниться в твиттере. В папке с.

Формирование POST запроса для ASPX странички
Доброго времени суток. Не знаю в какую ветку написать, но думаю лучше будет сюда. Задача такова.

Эксперт JSЭксперт HTML/CSSЭксперт PHP

1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432

Это будет Get запрос а не Post

Только не знаю зачем вам такое нужно?
Можно сделать проще

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
 session_start(); $fields = array( "TITLE"=> "Плановая продажа", "TYPE_ID"=> "GOODS", "STAGE_ID"=>"NEW", "COMPANY_ID"=> 3, "CONTACT_ID"=> 3, "OPENED"=> "Y", "ASSIGNED_BY_ID"=> 1, "PROBABILITY"=> 30, "CURRENCY_ID"=> "USD", "OPPORTUNITY"=> 5000, "BEGINDATE"=> "2013-05-13T16:06:06+03:00", "CLOSEDATE"=> "2013-05-13T16:06:06+03:00" ); foreach($fields as $k=>$v){ $_SESSION['boom'][$k] = $v; } print_r($_SESSION['boom']); // теперь сессию можно использовать на любой странице ?>

На любой странице где будете использовать сессии в начале объявите как выше.
в начале скрипта

session_start();

Регистрация: 20.11.2013
Сообщений: 249

Добавлено через 3 минуты
мне нужно в php отправить post запрос на сервер rest api

Добавлено через 11 минут
Azdeman, ну вообще эта тема мало относится к 1С-битриксу так как тут не используется 1С-битрикс, а только битрикс24, без их cms

2261 / 1170 / 235
Регистрация: 16.03.2008
Сообщений: 5,619
Записей в блоге: 2

DELAKEY, ничего преобразовывать не надо. Для этого есть в PHP cURL. Примеров, я думаю, легко нагуглите по запросу «php curl post»

Добавлено через 11 минут
С просоня поспешил с ответом
DELAKEY, Вы используете cURL? Разве там надо массив в строку преобразовывать?
А вообще например так

1 2 3 4 5 6
$arData = array(); foreach($fields as $key=>$value) { $arData[]="$key=$value"; } $strData=implode('&',$arData);

Добавлено через 2 минуты
Все надо просыпаться http_build_query
Регистрация: 20.11.2013
Сообщений: 249

ЦитатаСообщение от voral Посмотреть сообщение

DELAKEY, Вы используете cURL? Разве там надо массив в строку преобразовывать?
А вообще например так

да, я находил много примеров где в cURL передавали просто массив, но у меня оно не работало а выдавала предупреждения, что не может преобразовать массив в строку,
вчера сделал вот так

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
$fields = array( "TITLE"=> "Плановая продажа", "TYPE_ID"=> "GOODS", "STAGE_ID"=>"NEW", "COMPANY_ID"=> 3, "CONTACT_ID"=> 3, "OPENED"=> "Y", //"ASSIGNED_BY_ID"=> 1, "PROBABILITY"=> 30, "CURRENCY_ID"=> "USD", "OPPORTUNITY"=> 5000, "BEGINDATE"=> "2013-05-13T16:06:06+03:00", "CLOSEDATE"=> "2013-05-13T16:06:06+03:00" ); $postline = ""; foreach($fields as $k=>$v){ $postline .= 'fields['. $k.']='.$fields[$k].'&'; } $postline .= "params[REGISTER_SONET_EVENT]=Y"; echo $postline; $rest = $api_url . "/rest/crm.deal.add?auth=".$access_token; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $rest); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postline); $result = curl_exec($ch); curl_close($ch); print_r(json_decode($result,1));

сейчас попробую http_build_query

Добавлено через 3 минуты
voral, Спасибо оно работает так как нужно

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *