Отправка и получение данных с сайта (xml.adeo.pro)
День добрый.
Есть сайт xml.adeo.pro
По сайту есть документация, в т.ч. описан пример запроса данных на php
Пытаюсь преобразовать и получить данные в 1С, процедуры в 1С такие:
На вход подается временный тектовый файл вида:
action=price&login=ЛОГИН&password=ПАРОЛЬ&code=2630035503
На выходе получаю пустой файл, при этом ошибок вроде как нет.
Не понимаю, где делаю не так?
Есть сайт xml.adeo.pro
По сайту есть документация, в т.ч. описан пример запроса данных на php
?php
$xml='<?xml version="1.0" encoding="UTF-8" ?>
<message>
<param>
<action>priceBatch</action>
<login>mylogin</login>
<password>maypassword</password>
<dayLimit>5</dayLimit>
</param>
<items>
<pn>34216775287</pn>
BMW</brand>
</items>
<items>
<pn>288909U100</pn>
NISSAN</brand>
</items>
<items>
</message>
';
$data = array('xml' => $xml);
$address="http://xml.adeo.pro";
$ch = curl_init($address);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result=curl_exec($ch);
echo $result;
?>
Показать$xml='<?xml version="1.0" encoding="UTF-8" ?>
<message>
<param>
<action>priceBatch</action>
<login>mylogin</login>
<password>maypassword</password>
<dayLimit>5</dayLimit>
</param>
<items>
<pn>34216775287</pn>
BMW</brand>
</items>
<items>
<pn>288909U100</pn>
NISSAN</brand>
</items>
<items>
</message>
';
$data = array('xml' => $xml);
$address="http://xml.adeo.pro";
$ch = curl_init($address);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result=curl_exec($ch);
echo $result;
?>
Пытаюсь преобразовать и получить данные в 1С, процедуры в 1С такие:
Процедура КнопкаСформироватьНажатие(Кнопка)
Структура = ПолучитьСтруктуруПараметров();
ОтправитьPOSTНаСервер(Структура);
ИмяФайла = Структура.ИмяФайлаПолучения;
Чтение = новый ЧтениеТекста(ИмяФайла);
Стр = Чтение.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
Сообщить(Стр);
Стр = Чтение.ПрочитатьСтроку();
КонецЦикла;
Чтение.Закрыть();
КонецПроцедуры
Функция ПолучитьСтруктуруПараметров();
СтруктураПараметров = Новый Структура();
ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt");
ИмяФайлаПолучения = ПолучитьИмяВременногоФайла("txt");
СтруктураПараметров.Вставить("ИмяФайлаОтправки", ИмяФайлаОтправки);
СтруктураПараметров.Вставить("ИмяФайлаПолучения",ИмяФайлаПолучения);
ПараметрыСкрипта = Новый ТаблицаЗначений();
ПараметрыСкрипта.Колонки.Добавить("Наименование");
ПараметрыСкрипта.Колонки.Добавить("Значение");
НовСтрока = ПараметрыСкрипта.Добавить();
НовСтрока.Наименование = "action";
НовСтрока.Значение = "price";
НовСтрока = ПараметрыСкрипта.Добавить();
НовСтрока.Наименование = "login";
НовСтрока.Значение = СокрЛП(Логин);
НовСтрока = ПараметрыСкрипта.Добавить();
НовСтрока.Наименование = "password";
НовСтрока.Значение = СокрЛП(Пароль);
НовСтрока = ПараметрыСкрипта.Добавить();
НовСтрока.Наименование = "code";
НовСтрока.Значение = СокрЛП(КодДетали);
СтруктураПараметров.Вставить("ПараметрыСкрипта",ПараметрыСкрипта);
СтруктураПараметров.Вставить("Сервер","xml.adeo.pro");
СтруктураПараметров.Вставить("СкриптПриема","pricedetals2.php");
Возврат СтруктураПараметров;
КонецФункции
Функция ОтправитьPOSTНаСервер(СтруктураПараметров) Экспорт
ИмяФайлаОтправки = СтруктураПараметров.ИмяФайлаОтправки;
ИмяФайлаПолучения = СтруктураПараметров.ИмяФайлаПолучения;
ЗаголовокHTTP = Новый Соответствие();
//ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded" + Символы.ВК + Символы.ПС + "charset:UTF-8");
ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.ANSI, Символы.ПС, ЛОЖЬ);
СтрокаПараметров="";
Для каждого Строка из СтруктураПараметров.ПараметрыСкрипта Цикл
СтрокаПараметров = СтрокаПараметров+Строка.Наименование+ "=" + Строка.Значение+"&";
КонецЦикла;
Если Прав(СтрокаПараметров,1)="&" Тогда
СтрокаПараметров = Сред(СтрокаПараметров,1,СтрДлина(СтрокаПараметров)-1);
КонецЕсли;
ФайлОтправки.Записать(СтрокаПараметров);
ФайлОтправки.Закрыть();
ФайлОтправки = Новый Файл(ИмяФайлаОтправки);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки);
//НТТР = Новый HTTPСоединение(СтруктураПараметров.Сервер,,СокрЛП(Логин),СокрЛП(Пароль),,,);
НТТР = Новый HTTPСоединение(СтруктураПараметров.Сервер,,,,,,);
НТТР.ОтправитьДляОбработки(ИмяФайлаОтправки,СтруктураПараметров.СкриптПриема,ИмяФайлаПолучения,ЗаголовокHTTP);
КонецФункции
ПоказатьНа вход подается временный тектовый файл вида:
action=price&login=ЛОГИН&password=ПАРОЛЬ&code=2630035503
На выходе получаю пустой файл, при этом ошибок вроде как нет.
Не понимаю, где делаю не так?
Найденные решения
Вот корректная функция, с которой сработало:
Функция ОтправитьPOSTНаСервер(СтруктураПараметров) Экспорт
ИмяФайлаОтправки = СтруктураПараметров.ИмяФайлаОтправки;
ИмяФайлаПолучения = СтруктураПараметров.ИмяФайлаПолучения;
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded" + Символы.ВК + Символы.ПС + "charset:UTF-8");
Файл = Новый ЗаписьXML;
Файл.ОткрытьФайл(ИмяФайлаОтправки);
Файл.ЗаписатьНачалоЭлемента("message");
Файл.ЗаписатьНачалоЭлемента("param");
Файл.ЗаписатьНачалоЭлемента("action");
Файл.ЗаписатьТекст("price");
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("login");
Файл.ЗаписатьТекст(СокрЛП(Логин));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("password");
Файл.ЗаписатьТекст(СокрЛП(Пароль));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("code");
Файл.ЗаписатьТекст(СокрЛП(КодДетали));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();
ФайлОтправки = Новый Файл(ИмяФайлаОтправки);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки);
//НТТР = Новый HTTPСоединение(СтруктураПараметров.Сервер,,СокрЛП(Логин),СокрЛП(Пароль),,,);
НТТР = Новый HTTPСоединение(СтруктураПараметров.Сервер,,,,,,);
НТТР.ОтправитьДляОбработки(ИмяФайлаОтправки,СтруктураПараметров.СкриптПриема,ИмяФайлаПолучения,ЗаголовокHTTP);
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот корректная функция, с которой сработало:
Функция ОтправитьPOSTНаСервер(СтруктураПараметров) Экспорт
ИмяФайлаОтправки = СтруктураПараметров.ИмяФайлаОтправки;
ИмяФайлаПолучения = СтруктураПараметров.ИмяФайлаПолучения;
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded" + Символы.ВК + Символы.ПС + "charset:UTF-8");
Файл = Новый ЗаписьXML;
Файл.ОткрытьФайл(ИмяФайлаОтправки);
Файл.ЗаписатьНачалоЭлемента("message");
Файл.ЗаписатьНачалоЭлемента("param");
Файл.ЗаписатьНачалоЭлемента("action");
Файл.ЗаписатьТекст("price");
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("login");
Файл.ЗаписатьТекст(СокрЛП(Логин));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("password");
Файл.ЗаписатьТекст(СокрЛП(Пароль));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("code");
Файл.ЗаписатьТекст(СокрЛП(КодДетали));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();
ФайлОтправки = Новый Файл(ИмяФайлаОтправки);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки);
//НТТР = Новый HTTPСоединение(СтруктураПараметров.Сервер,,СокрЛП(Логин),СокрЛП(Пароль),,,);
НТТР = Новый HTTPСоединение(СтруктураПараметров.Сервер,,,,,,);
НТТР.ОтправитьДляОбработки(ИмяФайлаОтправки,СтруктураПараметров.СкриптПриема,ИмяФайлаПолучения,ЗаголовокHTTP);
КонецФункции
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот