Имя: Пароль:
1C
1С v8
Конвертировать html запрос в 1С HTTPЗапрос
0 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

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

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


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

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

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

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