Как кодировать параметры HTTP POST (клиент C # на сервер PHP)?

У меня возникли проблемы с определением наилучшего способа кодирования параметров POST для вызова сервера. Я пишу клиент C #, который будет обслуживаться сервером PHP. Я хочу обеспечить большую гибкость параметров, поэтому мой текущий план состоит в том, чтобы иметь один параметр, который я использую для кодирования JSON. Например:

params = {"object":"Main","function":"doecho","params":["echothis...."]}

Я использую объект C # WebRequest и тип содержимого «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?

У меня есть полный контроль над клиентом и сервером, поэтому я хотел бы знать, что является правильным / лучше всего сделать.

10
задан Yuval Itzchakov 22 November 2014 в 09:27
поделиться