![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| EasyTask |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Добрый день! Помогите разобраться с непростой задачкой. Ситуация обстоит следующим образом:
Наш сайт генерирует XML, затем кодирует его в base64 и с помощью POST запроса отправляет кодированный XML на биллинг, где он уже конкретно обрабатывается. Проблемы пришла оттуда, откуда ее меньше всего ждали. При определенном сочетании символов мы получаем следующий кодированный XML:
Что в оригинале означает:
Все ыбы хорошо, если бы не одно НО. НО это заключается в одном, маленьком символе создающем большие проблемы: Вырезка из кодированного XML:
При отправке POST запроса, символ "+" проходит urlencode и в результате приобретает вид "%2B" и при раскодировке "бьет" нашу XML. Кто то сталкивался с подобным? Помогите с решением проблемы. |
||||||
|
|||||||
| EasyTask |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Пока что отвечу сам себе
На данный момнет вижу два пути решения проблемы: 1. Существуют специальные функции для безпопасного base64 кодирования:
В наших реалиях мало реалзиуемо, т.к генерация и отправка base64 происходит в огромом количестве частей кода + кодер нужно весить на платформу, а декодер на биллинг. 2. Более изященое решение, перед декодом проводить замену "заурлэнкоженных" символов, на нормальные (т.е проводить "обратный" urlencode) %2B => + %3D => = %26 => & %2F => / Но может все же есть более изященое решение? Например опция курла? (POST запросы отправляются через curl) |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Как посылается этот XML? Curl? Какой тип передачи данных используется - загрузка файла или передача в поле формы? По всей видимости, в процессе генерации-получения происходит еще одно, лишнее url-кодирование, так как в обычной жизни раскодировать вручную не нужно. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
А зачем кстати? Почему не передавать просто XML? Что касается вопроса, то
Проверять действительно ли где-то кодируется POST параметр, как писал ksnk, сейчас негде Это сообщение отредактировал(а) Fortop - 26.5.2012, 08:45 -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
| EasyTask |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 26.7.2010 Репутация: нет Всего: нет |
Да курл. Ни так и ни так. xml кодируется в строку и выступает в результате post параметра отправляемых курлом.
Ранее был другой способ передачи: http://billing.url/?order=xml_in_base64 Опережая вопрос, сейчас нельзя переделать под отправку без него т.к у нас очень много проектов и везде используется такой механизм. Да, об этом я и писал что перед декодом, на биллинге, нужно использовать декодер урл. |
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |