gifts2017

POST запрос

Опубликовал Андрей Попов (Andrew_flyer) в раздел Программирование - Практика программирования

Послать POST запрос и получить ответ.

Недавно столкнулся с необходимостью отправки post запросов из 1С 8.1 но ничего внятного так и не нашёл.

Предлагаю свой вариант решения проблемы.

До логического конца не дошёл ещё, как только доработаю, выложу обработку.

Функция ТекстЗапросБаланса(Пользователь,Пароль)
    Результат = "<?xml version=""1.0"" encoding=""utf-8""?>" +
                "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" +
                    "<soap:Body>" +
                        "<GetCreditBalance xmlns=""http://api.prostor-sms.ru/WebService.asmx"">" +
                            "<smsUser>" + Пользователь + "</smsUser>" +
                            "<password>" + Пароль + "</password>" +
                        "</GetCreditBalance>" +
                    "</soap:Body>" +
                 "</soap:Envelope>";
     Возврат Результат;
КонецФункции


Процедура ПослатьЗапрос()
    ИмяСервера= "http://api.prostor-sms.ru/WebService.asmx";
    Логин= "";
    Пароль= "";
    MSXML = Новый COMОбъект("MSXML2.XMLHTTP.4.0");
    MSXML.open("POST", ИмяСервера, 0);
    MSXML.setRequestHeader("Accept", "text/xml; charset=utf-8");
    MSXML.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");
    MSXML.setRequestHeader("Cache-Control","post-check=0, pre-check=0");
    MSXML.setRequestHeader("SOAPAction", "http://api.prostor-sms.ru/WebService.asmx/GetCreditBalance");
    ЗапросXML = ТекстЗапросБаланса(Логин, Пароль);
    MSXML.send(ЗапросXML);
    ОтветПолучен = Ложь;
    Для НомерЦикла = 1 по 100 Цикл
        Если MSXML.readyState > 3 Тогда
            ОтветПолучен = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Если ОтветПолучен Тогда
        Результат = MSXML.responseXML.xml;
        xmlDoc = Новый COMОбъект("MSXML2.DOMDocument"); 
        xmlDoc.async = 0;
        xmlDoc.LoadXML(Результат);
        ЧтениеXML = Новый ЧтениеXML;
        ЧтениеXML.УстановитьСтроку(Результат);
        GetCreditBalanceResult = 0;
        creditBalance =  0;
        Пока ЧтениеXML.Прочитать() Цикл
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Serj (Serj1C) 05.02.10 08:38
По статистие большинство веток формумов в интернете заканчиваются сообщением примерно с таким содержанием - "Спасибо, сейчас попробую, обязательно отпишу".
Надеюсь обработку выложишь )))
2. andrew_flyer (Andrew_flyer) 05.02.10 12:43
:) Статистика знает всё)
Сдвиги есть, так что выложу уже сегодня!
3. andrew_flyer (Andrew_flyer) 05.02.10 13:31
4. Армен Арабханян (Arabo_xv) 08.02.10 13:31
(0)
Есть такой объект в 1С - HTTPСоединение
Не могу понять за чем нужно использовать COM для того что 1С умеет делать. Тут однозначно минус ставить надо за незнание предметной области.
6. andrew_flyer (Andrew_flyer) 24.02.10 16:51
7. Павел Б (lame) 12.05.10 07:13
8. Андрей Попов (Andrew_flyer) 17.05.10 11:17
(7) кроме "HTTPСоединение" ни чего интересного тут не используется!
Интересно именно в виде xml запроса!
Кто сталкивался, пишите
9. Андрей Попов (Andrew_flyer) 17.05.10 12:49
В добавлении, рекомендую ознакомиться с механизмом преобразования строки в URL!!!
http://infostart.ru/public/70330/
10. Павел Б (lame) 25.05.10 02:01
Интересно именно в виде xml запроса

и в чем разница то ?
как сделаешь со стороны сервера разбор запроса - так и надо посылать.
если у тебя обработчик на сервере обрабатывает только xml-то конечнео надо посылать только xml.
в моем примере - никакого изврата. Посылается строка с параметрами типа
"&Parametr1="+Параметр1+"&Parametr2="+Параметр2;
все просто и элементарно.

тебе может показать пример формирования xml ?
11. Валерий (postnet) 31.08.10 17:31
Зачем мучатся, все эти методы и именно для рассылки уже реализованы http://www.infostart.ru/public/65932/ И получение баланса и отправка SMS все есть и работает все через эти сервисы напрямую. Проверьте ваши логин и пароль. :D