Comment coder HTTP paramètres POST (client C#, PHP Serveur)?

Je vais avoir de la difficulté à déterminer la meilleure façon d'encoder les paramètres POST à un serveur d'appel. J'ai écrit un client C# qui sera servi par un serveur PHP. Je veux permettre une grande souplesse dans les paramètres, donc mon plan actuel est d'avoir un seul paramètre que j'utilise JSON pour l'encodage. Par exemple:

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

Je suis en utilisant le C# objet WebRequest et contentType "application/x-www-form-urlencoded; charset=UTF-8". Les données sont sur le serveur et tout fonctionne comme prévu jusqu'à ce que je ajouter illégale JSON caractères dans les données.

Par exemple, si j'utilise les données suivantes, alors je ne peux pas faire un json_decode sur elle sur le côté serveur. Le serveur s'affiche automatiquement l' %40 dans un guillemet double (") quand je l'ai lu avec $this->getRequest()->getParams(); (zend framework).

params = {"object":"Main","function":"doecho","params":["echothis%25%5d%22%40%3d%26...."]}

Quelle est la meilleure pratique ici? Dois-je en base64 encode les données? Est-il quelque chose d'évident qui me manque avec le type de contenu ou un php?

J'ai le plein contrôle sur le client et le serveur, donc je voudrais savoir quelle est la bonne/meilleure chose à faire.

OriginalL'auteur Jeff | 2011-10-26