|
1С и POST запрос - (символ точки в начале пакета) | ☑ | ||
---|---|---|---|---|
0
Olelykoye
29.10.14
✎
10:00
|
Добрый день. Есть запрос на простую страницу php.
Соединение = Новый HTTPСоединение("192.168.11.185","80"); Заголовки = Новый Соответствие; СтрокаОтправки = "AAAAA=BBBBB"+Символы.ПС; Заголовки.Вставить("Content-Length",СтрДлина(СтрокаОтправки)); Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Запрос = Новый HTTPЗапрос("/script/test.php",Заголовки); Запрос.УстановитьТелоИзСтроки(СтрокаОтправки); Ответ = Соединение.ОтправитьДляОбработки(Запрос); Возникает ошибка : {Форма.Форма1.Форма(15)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки) Ответ = Соединение.ОтправитьДляОбработки(Запрос); по причине: Ошибка работы с Интернет: Server returned nothing (no headers, no data) Если изменить строку Заголовки.Вставить("Content-Length",СтрДлина(СтрокаОтправки)+2); Пакет уходит, но страница сообщает что пришли данные: ".AAAAA=BBBBB" хотя точки нет в коде. WireShark - следующий пакет POST /script/test.php HTTP/1.1 User-Agent: 1C+Enterprise/8.2 Host: 192.168.11.185 Accept: */* Content-Length: 14 Content-Type: application/x-www-form-urlencoded ...AAAAA=BBBBB HTTP/1.1 200 OK Date: Wed, 29 Oct 2014 06:57:00 GMT Server: Apache/2.4.7 (Ubuntu) X-Powered-By: PHP/5.5.9-1ubuntu4.4 Content-Length: 0 Content-Type: text/html; charset=UTF-8 Видно что 1С шлет данные с ... Что не так? Или нельзя отправлять данные таким методом, нужно в любом случае отправлять через файл а файл на сервере получать и разбирать. |
|||
1
yukon
29.10.14
✎
10:41
|
(0) Все штатно: если кодировка UTF-8, то в начале контента *принудительно* записывается BOM
|
|||
2
oleg_km
29.10.14
✎
10:53
|
(1) Странно, он тело вроде записывает из строки. Это при записи в файл записывается BOM. Какое шестнадцатеричное представление этой точки?
|
|||
3
Olelykoye
29.10.14
✎
10:56
|
Действительно, указав кодировку к примеру "windows-1251", скрипт принял без проблем запрос. Спасибо.
|
|||
4
Olelykoye
29.10.14
✎
11:03
|
И еще, может кому то понадобится - получить ответ от скрипта, достаточно прописать в скрипте обычное "echo 'Текст'", а на стороне 1С - что бы получить строчку - следующее
..Ответ = Соединение.ОтправитьДляОбработки(Запрос); Сообщить(Ответ.КодСостояния); Сообщить(Ответ.ПолучитьТелоКакСтроку()); второй строчкой и будет ответ от скрипта. Еще раз спасибо. |
|||
5
yukon
29.10.14
✎
11:07
|
(2) Это известная проблема, как минимум, с июня прошлого года. В ближайших релизах 8.3 обещались исправить.
|
|||
6
yukon
29.10.14
✎
11:13
|
Нашел: http://v8.1c.ru/o7/201410json/index.htm
HTTPЗапрос.УстановитьТелоИзСтроки(Строка, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |