Имя: Пароль:
1C
1С v8
cURL и 1С (Post-запрос)
,
0 бомболюк
 
07.11.12
11:05
Добрый день. Подскажите, пожалуйста, если кто в курсе: как мне вот эту строку (post-запрос), подаваемую на вход программе curl.exe, выполнить средствами 1С:

curl -v -F "ufile=@c:\file1.csv;type=text/plain;filename=file1" -0 -F "__login=dummy" -F "__password=MyPassword" -F "__did=17" http://someserver.com/upload.phtml
1 pumbaEO
 
07.11.12
11:14
КомандаСистемы или запустить приложение...
2 бомболюк
 
07.11.12
11:17
нет, мне бы портировать эти параметры в вызовы 1С-ких методов объекта типа (предположительно) "HTTPСоединение".
3 luns
 
07.11.12
11:20
(0) напрямую заPostить файл не выйдет. надо серверный скрипт вызывать и ему двоичные данные отдавать.
4 бомболюк
 
07.11.12
11:26
(3) то есть собственно без этого curl-а не обойтись получается?
5 DrunkAnimal
 
07.11.12
11:30
(3) почему?
6 Повелитель
 
07.11.12
11:36
Вот мой пример:
СсылкаЗапроса = "http://ksmarket.kz/1c/1c-sync.php?" +
       "action=replace_valuta" + //Команда
       "&name=" + Состав.БуквенныйКод + //Буквенный код RUB,KZT
       "&caption=" + Состав.Наименование + //Наименование
       "&kash=" + Новый УникальныйИдентификатор + //чтобы не кэшировалось
       "&rate=" + Формат(Состав.Курс,"ЧРД=."); //Курс
       

Функция сайтВыполнитьКомандуСайта(СсылкаЗапроса,ИмяОперации) Экспорт
   
   Авторизация = сайтАвторизация();
   Пользователь = Авторизация.Пользователь;
   Пароль = Авторизация.Пароль;
   
   //создаем объект "Microsoft.XMLHTTP"
   попытка
       XMLHttp = новый COMObject("Microsoft.XMLHTTP");
   исключение
       сайтЗаписатьВЛог(ИмяОперации,"Ошибка создания объекта 'Microsoft.XMLHTTP': " + ОписаниеОшибки());
       возврат Строка(ТекущаяДата()) + " Ошибка создания объекта 'Microsoft.XMLHTTP': " + ОписаниеОшибки();
   конецпопытки;    
   
   попытка
       XMLHttp.open("GET", СсылкаЗапроса, Ложь,Пользователь,Пароль);
   исключение
       сайтЗаписатьВЛог(ИмяОперации," Ошибка инициализации запроса HTTP: " + ОписаниеОшибки());
       возврат Строка(ТекущаяДата()) + " Ошибка инициализации запроса HTTP: " + ОписаниеОшибки();
   конецпопытки;
   
   //отправляем запрос
   попытка
       XMLHttp.send();
   исключение
       сайтЗаписатьВЛог(ИмяОперации," Ошибка отправки запроса HTTP: " + ОписаниеОшибки());
       возврат Строка(ТекущаяДата()) + " Ошибка отправки запроса HTTP: " + ОписаниеОшибки();
   конецпопытки;
   
   //проверка и обработка ответа
   если XMLHttp.status = 200 тогда
       Ответ = XMLHttp.responsetext;
       //1 - Успех
       //-1 - Отказ
       //Текст - ТекстОшибки
       //Сообщить(Ответ);
       Если Ответ <> "1" Тогда
           сайтЗаписатьВЛог(ИмяОперации," Ошибка: " + Ответ);
       КонецЕсли;
       Возврат Ответ;
   иначе
       сайтЗаписатьВЛог(ИмяОперации," Ошибка - статус: " + Строка(XMLHttp.StatusText));
       возврат Строка(ТекущаяДата()) + " Ошибка - статус: " + Строка(XMLHttp.StatusText);
   конецесли;
   
КонецФункции

       Ответ = сайтВыполнитьКомандуСайта(СсылкаЗапроса,ИмяОперации);
7 бомболюк
 
07.11.12
11:37
(6) мне надо чтоб это из под Linux работало :-(
8 Повелитель
 
07.11.12
11:37
Упс, вначале 1 строчку пропустил (она в конец упала), надо так:
//Добавление или изменение пользователя
       //Если передать пустой параметр, он затрет
       //Если параметр не передавать, он останется без изменения
       СсылкаЗапроса = "http://ksmarket.kz/1c/1c-sync.php?" +
       "action=replace_valuta" + //Команда
       "&name=" + Состав.БуквенныйКод + //Буквенный код RUB,KZT
       "&caption=" + Состав.Наименование + //Наименование
       "&kash=" + Новый УникальныйИдентификатор + //чтобы не кэшировалось
       "&rate=" + Формат(Состав.Курс,"ЧРД=."); //Курс
       
       Ответ = сайтВыполнитьКомандуСайта(СсылкаЗапроса,ИмяОперации);
9 Повелитель
 
07.11.12
11:37
(7) под линукс не подскажу
10 xReason
 
07.11.12
11:58
(8) Это будет GET, а как сделать POST ?