|
Модераторы: ginnie |
|
alezzz |
|
||||||||
сплю... Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: нет Всего: 14 |
Есть скрипт который принимает xml от программы-клиента. Программа шлет xml методом POST, я вижу в логах апача что приходит постом, но при разборе того что пришло Data::Dumper-ом вижу что-то непонятное.
Принимаю так:
Далее Dumper показывает:
как-будто данные пришли GET-ом. Пришлось сделать "костыль" и принять как:
Все работает, но глаз режет. Начал разбираться как это правильнее сделать. Пробовал принять из STDIN в разных вариантах, например:
Но ничего на выходе нет. Читаю man по СGI, но что-то не нахожу как принять напрямую данные. Добавлено через 5 минут и 5 секунд Извините, не в том разделе тему сделал |
||||||||
|
|||||||||
Pfailed |
|
|||
Опытный Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 1 Всего: 39 |
Как именно от клиента приходит?
Или без x-www-form-urlencoded? |
|||
|
||||
alezzz |
|
|||
сплю... Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: нет Всего: 14 |
CONTENT_TYPE = application/x-www-form-urlencoded; Charset=UTF-8
|
|||
|
||||
DurRandir |
|
|||
Опытный Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: нет Всего: 17 |
Cуществует магический параметр, который вернёт вам "сырые" данные POST'a:
|
|||
|
||||
alezzz |
|
|||
сплю... Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: нет Всего: 14 |
ага, существует , осталось это объяснить программе-клиенту:
и программа написана не под мой скрипт, у меня просто шлюз конвертирующий в другой протокол, т.е. как-то ведь работало Это сообщение отредактировал(а) alezzz - 15.12.2011, 00:17 |
|||
|
||||
DurRandir |
|
|||
Опытный Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: нет Всего: 17 |
А _зачем_ вы делаете дамп этого $query? Т.е. вы попробовали, и вам тело запроса этот метод не вернул? Или вернул в каком-то другом виде? Т.к. то, что вы показываете, это не результат, полученный из $query->param('POSTDATA').
|
|||
|
||||
alezzz |
|
|||
сплю... Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: нет Всего: 14 |
а где же возмутся эти данные? я так понимаю что метод param берет данные из хеша с указаным в методе ключем. Всетаки дело в CONTENT_TYPE = application/x-www-form-urlencoded. Если отправлять в text/xml то приходит в POSTDATA. Я отправил xml с Content-type: application/x-www-form-urlencoded и получил такую же структуру, т.е. param(''<?xml version'') = '"1.0" encoding="UTF-8".... и как правильно забрать данные переданные через POST при CONTENT_TYPE = application/x-www-form-urlencoded? |
|||
|
||||
alezzz |
|
||||
сплю... Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: нет Всего: 14 |
Посмотрел HTTP::Request::Common, если передавать с контент-типом application/x-www-form-urlencoded не xml а данные как при GET запросе, например:
То все логично принимается, param('name1') = value1, param('name2') = value2. Видимо проблема нерешаема, криворукие разработчики неправильно сделали отправку xml. Из того же HTTP::Request::Common
_____ Просьба к модераторам переместить тему в "Perl: разработка для Web" Это сообщение отредактировал(а) alezzz - 15.12.2011, 12:12 |
||||
|
|||||
DurRandir |
|
|||
Опытный Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: нет Всего: 17 |
В общем, действительно, если content-type=application/x-www-form-urlencoded, то POSTDATA нет. Если перед скриптом стоит nginx, и принимать он должен только такие "кривые" запросы, то укажите для этого location'a
fastcgi_param CONTENT_TYPE "application/none" |
|||
|
||||
alezzz |
|
|||
сплю... Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: нет Всего: 14 |
DurRandir, на хостинге апач, но за совет спасибо.
|
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: GUI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |