|
Не обрабатывается POST запрос посланный из 1С | ☑ | ||
---|---|---|---|---|
0
vudo
14.06.14
✎
12:51
|
Уже весь ум сломал. php упорно не видит параметры POST запроса созданного из 1С...
Вот текст запроса 1С: ИмяВыходногоФайла = ПолучитьИмяВременногоФайла(); ИмяПользователя = Константы.ВТ_ИмяПользователя.Получить(); Прокси = Новый ИнтернетПрокси; Соединение = Новый HTTPСоединение(Константы.ВТ_АдресСервера.Получить(), Константы.ВТ_ПортСервера.Получить(),,,Прокси); СгенерированныйКлюч = ""; ИмяПостФайла = ПолучитьИмяВременногоФайла(); Заголовки = Новый Соответствие(); АдресЗапросаПост = "webservice.php"; ЗапросНаОтправку = Новый HTTPЗапрос(АдресЗапросаПост, Заголовки); ЗапросНаОтправку.УстановитьТелоИзСтроки("username=" + ИмяПользователя); Попытка Ответ = Соединение.ОтправитьДляОбработки(ЗапросНаОтправку); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Сообщить(Ответ.ПолучитьТелоКакСтроку()); Вот код php: echo 'Hello '. $_POST["username"]; foreach ($_POST as $key => $value){ echo "{$key} = {$value}\r\n"; } Возвращается просто Hello Подобный вызов из браузера отрабатывает нормально. Что не так? Выжег все мозги. Уже игрался и с разными заголовками - ничего не помогает! Помогите кто-нибудь! |
|||
1
vudo
14.06.14
✎
13:16
|
А что это за символы 1Ска лепит перед телом запроса:
EF BB FF Может из-за этого? |
|||
2
ramir
14.06.14
✎
13:19
|
&НаСервере
Функция ОтправитьЗапросPOST(АдресСайта, АдресРесурса, Параметры) Экспорт ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла(); ФайлОтправки = Новый ТекстовыйДокумент; ФайлОтправки.УстановитьТипФайла(КодировкаТекста.UTF8); Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()),"-",""); Для Каждого Параметр Из Параметры Цикл ФайлОтправки.ДобавитьСтроку("--" + Boundary); ФайлОтправки.ДобавитьСтроку("Content-Disposition: form-data; name=""" + Параметр.Ключ + """" + Символы.ПС); ФайлОтправки.ДобавитьСтроку(Параметр.Значение); ФайлОтправки.ДобавитьСтроку("--" + Boundary); КонецЦикла; ФайлОтправки.Записать(ИмяФайлаЗапроса, КодировкаТекста.UTF8); ФайлОтправки = Новый Файл(ИмяФайлаЗапроса); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("POST /token HTTP/1.0"); ЗаголовокHTTP.Вставить("Host", АдресСайта); ЗаголовокHTTP.Вставить("Content-Type","multipart/form-data; boundary=" + Boundary); ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки); // устанавливаем соединение с сервером Попытка Соединение = Новый HTTPСоединение(АдресСайта); //Сообщить(АдресСайта); //Сообщить(АдресРесурса); Исключение Сообщить("Не удалось установить соединение:" + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); Возврат Неопределено; КонецПопытки; // посылаем запрос ФайлРезультата = ПолучитьИмяВременногоФайла(); Попытка Соединение.ОтправитьДляОбработки(ИмяФайлаЗапроса, АдресРесурса, ФайлРезультата, ЗаголовокHTTP); Соединение = Неопределено; Исключение Сообщить(ОписаниеОшибки()); Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); Возврат Неопределено; КонецПопытки; Чтение = Новый ЧтениеТекста(ФайлРезультата); Результат = Чтение.Прочитать(); Чтение.Закрыть(); Возврат Результат; КонецФункции |
|||
3
vudo
14.06.14
✎
13:22
|
Так с этими символами разобрался.
UTF-8 без BOM и UTF-8 Это просто символы BOM |
|||
4
vudo
14.06.14
✎
13:47
|
(2) Всё тоже...
|
|||
5
oleg_km
14.06.14
✎
13:49
|
Фиддлер что говорит?
|
|||
6
vudo
14.06.14
✎
13:58
|
(5) Тоже все отправка с символами BOM
--22d7d49b2af142ae895846dffa74d4b1 Content-Disposition: form-data; name="name" admin --22d7d49b2af142ae895846dffa74d4b1 Насколько я понимаю, это текст не правильный Должно быть username=admin |
|||
7
vudo
14.06.14
✎
14:29
|
Добился отправки без символов BOM, но толку никакого...
|
|||
8
vudo
14.06.14
✎
15:02
|
Выжег мозга! Вот чего не хватало в посте (0):
Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded"); Заголовки.Вставить("cache-control", "max-age=0"); Заголовки.Вставить("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); Заголовки.Вставить("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"); Заголовки.Вставить("Accept-Encoding", "gzip,deflate,sdch"); Заголовки.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"); Основное: Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded"); Получилось... Тема закрыта. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |