Имя: Пароль:
1C
1С v8
POST запрос. Помогите решить проблему.
0 Boudybuilder
 
22.09.14
00:48
в ТЗ указано что надо отправить POST запрос на адрес: http://сервер/new_orders.php с заполненной переменной $_POST['xml_request'], в которой передается содержимое XML фaйла.

Тут два вопроса:
1) Где заполняется эта переменная
2) в каком виде должно быть содержимое хмл ,  строка?

Делаю я так:

Если можно исправте что не так

    Попытка
        WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
        WinHttp.Option(2,"utf-8");
        WinHttp.Open("POST",Сервер,0);
        
        WinHttp.Send("$_POST['xml_request']");
        ТекстОтвета = WinHttp.ResponseText();
        Сообщить("УСПЕХТ !
        |
        |"+ТекстОтвета);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
1 SiAl-chel
 
22.09.14
01:50
(0) Какая версия 1С? Если 8-я, то лучше использовать родные объекты HHTСоединение и HTTPзапрос, а с вопросами по WinHTTP лучше обращаться на MSDN http://social.msdn.microsoft.com/Forums/ru-RU/home
2 Boudybuilder
 
22.09.14
01:53
(1) 8.3
3 МастерВопросов
 
22.09.14
04:46
+1 к родным методам 1С

Почитай в синтакс помошнике описание обьекта HTTPСоединение и его метод ОтправитьДляОбработки. Там довольно просто всё.
4 МастерВопросов
 
22.09.14
04:54
+(3) вот пример:

ФайлОтправки = Новый Файл(ИмяВременногоФайла);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());

Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type", "text/html;charset=utf-8");
Заголовки.Вставить("Content-Lenght", РазмерФайлаОтправки);

имяВыходногоФайла = ПолучитьимяВременногоФайла("xml");


HTTP = Новый HTTPСоединение(НазваниеСервераБезHTTPиСлешев);
ОтветСервера = HTTP.ОтправитьДляОбработки(ИмяВременногоФайла, имяВыходногоФайла, Заголовки);
5 Нуфс-Нуфс
 
22.09.14
08:23
СтруктураДляПередачи = Новый Структура;
    СтруктураДляПередачи.Вставить("Пользователь", ПараметрыСеанса.ТекущийПользователь);
    СтруктураДляПередачи.Вставить("ДанныеСтрокой", "Строковые данные");
    ХранилищеДляПередачи = Новый ХранилищеЗначения(СтруктураДляПередачи, Новый СжатиеДанных(9));
    ТекстФайла = Сериализовать(ХранилищеДляПередачи);
    
    // передача файла
    Соединение = Новый HTTPСоединение(Адрес, , Логин, Пароль);
    Запрос = Новый HTTPЗапрос(путь");
    Запрос.УстановитьТелоИзСтроки(ТекстФайла);
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
6 Boudybuilder
 
25.09.14
21:48
Если Сервер = "http://gw.site.ru:11443/new_orders.php";

тогда так Новый HTTPСоединение(gw.site.ru, , Логин, Пароль);

куда девать порт 11443 и это куда new_orders.php ?
7 Boudybuilder
 
25.09.14
22:44
(4) ОтправитьДляОбработки имеет только два параметра. а не 3
8 Boudybuilder
 
25.09.14
22:48
(5) Запрос.УстановитьТелоИзСтроки(ТекстФайла);

Как мне получить текст хмл файла?
9 Boudybuilder
 
26.09.14
01:00
Уже хоть ответ от сервера приходит...

<?xml version="1.0" encoding="UTF-8"?><response ErrorCode="ERR_XML_EMPTY" Msg="Значение переменной $_POST[xml_request] пустое" />

Но почему пустое ... не понятно