У меня проблемы с поиском наилучшего способа кодирования параметров POST для вызова сервера. Я пишу клиент C #, который будет обслуживаться сервером PHP. Я хочу дать большую гибкость в параметрах, поэтому мой текущий план состоит в том, чтобы иметь один параметр, который я использую JSON для кодирования. Например:
params = {"object":"Main","function":"doecho","params":["echothis...."]}
Я использую объект C # WebRequest и contentType для "application / x-www-form-urlencoded; charset = UTF-8". Данные поступают на сервер, и все работает, как ожидалось, пока я не добавлю в данные недопустимые символы JSON.
Например, если я использую следующие данные, то я не смогу сделать для них код json_decode на стороне сервера. Похоже, что сервер автоматически превращает% 40 в двойные кавычки ("), когда я читаю его с помощью $ this-> getRequest () -> getParams (); (Zend_Framework).
params = {"object":"Main","function":"doecho","params":["echothis%25%5d%22%40%3d%26...."]}
Какая лучшая практика здесь? Нужно ли в base64 кодировать данные? Есть что-то очевидное, что мне не хватает с типом контента или настройкой php?
У меня есть полный контроль над клиентом и сервером, поэтому я хотел бы знать, что правильно / лучше всего делать.