|
post запрос в формате json из 1С | ☑ | ||
---|---|---|---|---|
0
MenOne777
25.05.17
✎
10:02
|
Есть задача, отправить запрос методом POST на сервер СМС рассылки. Разработчики отправили инструкцию к подключению. Не могу в ней разобраться. Вот инструкция:
POST должен включать в себя обязательные данные: 'login' => Имя пользователя в системе, формат строка 'password' => пароль пользователя в системе, формат строка 'message' => Текст сообщения для отправки, формат строка 'numbers' => Номера телефонов для отправки в массиве, формат JSON. Пример для PHP: 'login' => '[email protected]', 'password' => 'password', 'message' => 'Test Api в русском', 'numbers' =>json_encode(array( '77071166477', '77057683576', '77714099932', )), Готовое решение на PHP class SendSMS{ public function run() { $url = 'http://smsclick.kz/site/api'; $fields = array( 'login' => urlencode('[email protected]'), 'password' => urlencode('password'), 'message' => urlencode('Test Api в русском'), 'numbers' =>json_encode(array( '77071234567', '77051234567', '7771234567', )), ); $tocks=$this->gtp($url,$fields); } protected function gtp($url,$fields){ extract($_POST); foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string, '&'); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res= curl_exec($ch); curl_close($ch); return $res; } } С чего мне начать? |
|||
1
cw014
25.05.17
✎
10:05
|
С изучения ЗаписьJSON и HTTPСоединение
|
|||
2
MenOne777
25.05.17
✎
11:57
|
Спасибо. Т.е. в 1С это реализуемо?
|
|||
3
Юрий Лазаренко
25.05.17
✎
12:03
|
(2) Да. С помощью ЗаписьJSON формируется необходимый к отправке текст, этот текст помещается в объект HttpЗапрос его методом "УстановитьТелоИзСтроки" и потом HttpЗапрос выполняется с помощью метода объекта HttpСоединение.ОтправитьДляОбработки().
|
|||
4
Юрий Лазаренко
25.05.17
✎
12:05
|
Вот пример из СП, там все уже написано, только для xml, а не для json
// инициализируем объект для записи XML ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла(); ОбъектЗапись = Новый ЗаписьXML; ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("windows-1251", , Ложь); ОбъектЗапись.ОткрытьФайл(ИмяФайлаЗапроса, ПараметрыЗаписиXML); ОбъектЗапись.ЗаписатьОбъявлениеXML(); // выводим корневой элемент Request ОбъектЗапись.ЗаписатьНачалоЭлемента("Request"); // выводим элемент ClientInfo ОбъектЗапись.ЗаписатьНачалоЭлемента("ClientInfo"); ОбъектЗапись.ЗаписатьАтрибут("email", АдресОтправителя); ОбъектЗапись.ЗаписатьКонецЭлемента(); Если ИмяФайлаСертификата <> Неопределено Тогда // кодируем в Base64 сертификат ДвДанные.Прочитать(ИмяФайлаСертификата); ФайлСертификатаBase64 = ДвДанные.ПолучитьСтрокуBase64(); // выводим элемент Certificate ОбъектЗапись.ЗаписатьНачалоЭлемента("Certificate"); ОбъектЗапись.ЗаписатьТекст(ФайлСертификатаBase64); ОбъектЗапись.ЗаписатьКонецЭлемента(); КонецЕсли; Если ИмяФайлаЗашифрованногоКонтейнера <> Неопределено Тогда // кодируем в Base64 зашифрованный контейнер ДвДанные.Прочитать(ИмяФайлаЗашифрованногоКонтейнера); ФайлЗашифрованногоКонтейнераBase64 = ДвДанные.ПолучитьСтрокуBase64(); // выводим элемент Data ОбъектЗапись.ЗаписатьНачалоЭлемента("Data"); ОбъектЗапись.ЗаписатьТекст(ФайлЗашифрованногоКонтейнераBase64); ОбъектЗапись.ЗаписатьКонецЭлемента(); КонецЕсли; // записываем конец для корневого элемента ОбъектЗапись.ЗаписатьКонецЭлемента(); ОбъектЗапись.Закрыть(); АдресСервераОнлайнПроверки = "onlinefc.taxcom.ru"; РесурсНаСервере = "/online_fc/online_fc.dll" + ?(ПолучитьСертификат, "?IncludeCertificate", ""); // устанавливаем соединение с сервером Попытка Соединение = Новый HTTPСоединение(АдресСервераОнлайнПроверки, , , , Прокси); Исключение Сообщить("Не удалось установить соединение с сервером онлайн-проверки:" + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); Возврат; КонецПопытки; // посылаем запрос Попытка HTTPЗапрос = Новый HTTPЗапрос(РесурсНаСервере); HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаЗапроса); Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос); Соединение = Неопределено; Если Результат.КодСостояния > 299 Тогда Сообщить("Код состояния " + Результат.КодСостояния + ". Проверка не выполнена"); КонецЕсли; Исключение Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); КонецПопытки; |
|||
5
xaozai
25.05.17
✎
12:05
|
Вот в этой конфигурации всё реализовано запросами с использованием JSON. Своя специфика, правда, есть. Но суть должна быть понятна. Рекомендую.
http://catalog.mista.ru/public/299512/ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |