| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Curl + Base64 encode |
| Автор: EasyTask 26.5.2012, 04:31 | ||||||
| Добрый день! Помогите разобраться с непростой задачкой. Ситуация обстоит следующим образом: Наш сайт генерирует XML, затем кодирует его в base64 и с помощью POST запроса отправляет кодированный XML на биллинг, где он уже конкретно обрабатывается. Проблемы пришла оттуда, откуда ее меньше всего ждали. При определенном сочетании символов мы получаем следующий кодированный XML:
Что в оригинале означает:
Все ыбы хорошо, если бы не одно НО. НО это заключается в одном, маленьком символе создающем большие проблемы: Вырезка из кодированного XML:
При отправке POST запроса, символ "+" проходит urlencode и в результате приобретает вид "%2B" и при раскодировке "бьет" нашу XML. Кто то сталкивался с подобным? Помогите с решением проблемы. |
| Автор: EasyTask 26.5.2012, 05:01 | ||
| Пока что отвечу сам себе На данный момнет вижу два пути решения проблемы: 1. Существуют специальные функции для безпопасного base64 кодирования:
В наших реалиях мало реалзиуемо, т.к генерация и отправка base64 происходит в огромом количестве частей кода + кодер нужно весить на платформу, а декодер на биллинг. 2. Более изященое решение, перед декодом проводить замену "заурлэнкоженных" символов, на нормальные (т.е проводить "обратный" urlencode) %2B => + %3D => = %26 => & %2F => / Но может все же есть более изященое решение? Например опция курла? (POST запросы отправляются через curl) |
| Автор: Fortop 26.5.2012, 08:43 | ||||
А зачем кстати? Почему не передавать просто XML? Что касается вопроса, то
Проверять действительно ли где-то кодируется POST параметр, как писал ksnk, сейчас негде |
| Автор: EasyTask 26.5.2012, 13:13 | ||||
Да курл. Ни так и ни так. xml кодируется в строку и выступает в результате post параметра отправляемых курлом.
Ранее был другой способ передачи: http://billing.url/?order=xml_in_base64 Опережая вопрос, сейчас нельзя переделать под отправку без него т.к у нас очень много проектов и везде используется такой механизм. Да, об этом я и писал что перед декодом, на биллинге, нужно использовать декодер урл. |