Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

1С и POST запрос - (символ точки в начале пакета)

1С и POST запрос - (символ точки в начале пакета)
Я
   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С шлет данные с ...

Что не так? Или нельзя отправлять данные таким методом, нужно в любом случае отправлять через файл а файл на сервере получать и разбирать.
 
 
   yukon
 
1 - 29.10.14 - 10:41
(0) Все штатно: если кодировка UTF-8, то в начале контента *принудительно* записывается BOM
   oleg_km
 
2 - 29.10.14 - 10:53
(1) Странно, он тело вроде записывает из строки. Это при записи в файл записывается BOM. Какое шестнадцатеричное представление этой точки?
   Olelykoye
 
3 - 29.10.14 - 10:56
Действительно, указав кодировку к примеру "windows-1251", скрипт принял без проблем запрос. Спасибо.
   Olelykoye
 
4 - 29.10.14 - 11:03
И еще, может кому то понадобится - получить ответ от скрипта, достаточно прописать в скрипте обычное "echo 'Текст'", а на стороне 1С  - что бы получить строчку - следующее
..Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());

второй строчкой и будет ответ от скрипта. Еще раз спасибо.
   yukon
 
5 - 29.10.14 - 11:07
(2) Это известная проблема, как минимум, с июня прошлого года. В ближайших релизах 8.3 обещались исправить.
   yukon
 
6 - 29.10.14 - 11:13
Нашел: http://v8.1c.ru/o7/201410json/index.htm

HTTPЗапрос.УстановитьТелоИзСтроки(Строка, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);

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