Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Конвертировать html запрос в 1С HTTPЗапрос

Конвертировать html запрос в 1С HTTPЗапрос
Я
   zippygrill
 
24.05.18 - 11:40
Всем привет! Знатоки http запросов, нужна ваша помощь.

Не получается переписать РАБОЧИЙ html запрос на 1С-ный Новый HTTPЗапрос
Есть значит файл html c кодом, которая на отлично возвращает ответ в виде xml со всей нужной информацией.

"<html><body>
<FORM target=_blank ACTION="https://site.ru/charge/charge.cfm"; METHOD="POST">

<INPUT TYPE="TEXT" NAME="BillNumber" VALUE="5113507224001229">
<INPUT TYPE="HIDDEN" NAME="Merchant_ID" VALUE="113507">
<INPUT TYPE="HIDDEN" NAME="Login" VALUE="demo_oezzxwwbyuiq">
<INPUT TYPE="HIDDEN" NAME="Password" VALUE="4l4mdb3sa36fgj">
<INPUT TYPE="HIDDEN" NAME="Format" VALUE="3">
<INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Confirm">
</FORM>
</body></html>"

Пишу так:

    СтруктураURI = СтруктураURI(ПолныйАдресРесурса); 
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
    HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,Login,Password,,60,ЗащищенноеСоединение); 
    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
    ЗаголовокHTTP.Вставить("Accept-Charset", "utf-8");
    ЗаголовокHTTP.Вставить("BillNumber", BillNumber);
    ЗаголовокHTTP.Вставить("Merchant_ID", Merchant_ID);
    ЗаголовокHTTP.Вставить("Login", Login);
    ЗаголовокHTTP.Вставить("Password", Password);
    ЗаголовокHTTP.Вставить("Format", "3");
    HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере, ЗаголовокHTTP); 
    Попытка
        Результат =  HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Исключение
        // исключение здесь говорит о том, что запрос не дошел до HTTP-Сервера

        Сообщить("Произошла сетевая ошибка!");
        ВызватьИсключение;
    КонецПопытки;

В результате, в Результат.ПолучитьТелоКакСтроку() получаю ошибку ERROR-150;14:200 

Я так понимаю что все параметры нужно положить в заголовке запроса или все-таки по другому?
 
 
   zippygrill
 
1 - 24.05.18 - 11:44
Причем код ответа 1с-ного запроса равен 200 - то есть все ок
   vdss
 
2 - 24.05.18 - 11:57
Обрати внимание, что у тебя данные лежат внутри тега body, а ты пытаешься запихать их в заголовки, т.е. headers.

Попробуй свою строку с данными установить как тело запроса с помощью метода УстановитьТелоИзСтроки

HTTPЗапрос (HTTPRequest)
УстановитьТелоИзСтроки (SetBodyFromString)
Синтаксис:

УстановитьТелоИзСтроки(<ТелоКакСтрока>, <Кодировка>, <ИспользоватьBOM>)
Параметры:

<ТелоКакСтрока> (обязательный)

Тип: Строка.
Содержит тело запроса в виде строки.
   zippygrill
 
3 - 24.05.18 - 12:00
(2) Да,
 именно в этом дело было
   zippygrill
 
4 - 24.05.18 - 12:06
А есть ли аналог этой функции только для WinHttp.WinHttpRequest ?
   Локи-13
 
5 - 24.05.18 - 12:12
надо HTTPЗапрос.УстановитьТелоИзСтроки("BillNumber=5113507224001229&Merchant_ID=113507")
   Локи-13
 
6 - 24.05.18 - 12:12
заголовка хватит и одного Content-Type
   zippygrill
 
7 - 24.05.18 - 12:15
+ (4) нашел в методе Send()

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует