2011-04-25 3 views
8

C'est la première fois que j'écris un CFC qui capture les données JSON d'un serveur web externe qui afficherait des informations.coldfusion - recevoir des données JSON et les analyser

Je travaille avec un nouveau service qui peut être configuré pour nous envoyer, via HTTP POST à ​​une URL que je spécifie, un paquet JSON d'informations concernant les transactions échouées. Je pensais que je configurerais un CFC avec un accès à distance pour capturer et désérialiser les données JSON dans quelque chose que nous pourrions alors agir. Cependant, je ne peux pas comprendre comment configurer la fonction dans le CFC pour recevoir les données?

Je mis l'URL www.mydomain.com/com/processRemote.cfc?method=catchJSONdata & ReturnFormat = JSON

Pour le tester, je configurer une page de test simple qui devrait publier des données de session:

<cfhttp 
    result="result" 
    method="post" 
    url="http://www.mydomain.com/com/processRemote.cfc?method=catchJSONdata&ReturnFormat=json"> 

    <cfhttpparam type="header" name="content-type" value="application/json"/> 
    <cfhttpparam type="body" value="#serializeJSON(session)#"/> 

Alors, où je suis perdu est ce qui est le nom de cfargument que j'aurais dans ma cfc que je initialement stocker les données JSON dans? Je n'ai aucun contrôle sur le service distant qui enverrait les données JSON.

Merci,

Répondre

11

Si vous lire le contenu du corps de la requête HTTP vous ne trouverez pas dans la portée des arguments - vous aurez besoin pour l'extraire directement de la demande:

if (cgi.content_type EQ "application/json") 
{ 
    myData = deserializeJSON(ToString(getHTTPRequestData().content)); 
} 

J'utilise le cadre Taffy [1] pour la construction de services comme celui-ci (Disclaimer: J'ai effectivement aidé à écrire la partie du cadre qui traite ce cas).

[1] http://atuttle.github.com/Taffy/

+0

Merci bpanulla! J'essayais de créer un cfc qui accepterait les données affichées directement. En utilisant votre réponse, j'ai créé une page cfm qui accepte les données, s'assure que c'est ce que nous attendons, puis nous l'envoie à un cfc pour traitement. – Steve

+0

Cette même technique devrait fonctionner aussi bien dans votre méthode CFC. Votre CFC n'a pas besoin de définir d'arguments (CFARGUMENT ou script). – bpanulla

+0

Cela m'avait dérangé pendant des heures ... Si je reçois un message, je m'attendrais à ce que les données soient dans la portée du formulaire! Apparemment pas si c'est JSON posté dans le corps. Ahh bien, leçon apprise. À votre santé. –

Questions connexes