2010-09-20 24 views
1

Salutations. J'essaye d'envoyer un sms rapide par la voix de google utilisant leur API existante. Je pense que l'api est ce qui reste des jours Grand Central. Ils n'ont pas beaucoup de documentation. Voici où j'ai obtenu ma documentation: http://posttopic.com/topic/google-voice-add-on-developmentEn-tête de longueur de contenu CFHTTP pour l'article "API" de Google Voice

Je peux m'authentifier en utilisant cfhttp et obtenir la bonne réponse. Ensuite, je peux obtenir la valeur "_rnr_se" qui est requise pour une requête à partir d'une commande vocale google. Lorsque j'envoie le numéro, le message et les valeurs requises (Authorization et _rnr_se), je reçois un message "content-length" de la part de google. Mais comme il s'agit d'un post dynamique avec des champs de formulaire différents, pas un fichier, je ne suis pas sûr de ce qu'il faut publier en tant que contenu.

Si je mets juste une valeur arbitraire comme "1000" pour la longueur de contenu, la demande est juste là et je n'ai jamais de réponse. Si je mets quelque chose comme "0" ou "500" il revient avec un 500 - "Erreur interne du serveur".

Des idées sur la façon d'obtenir la valeur correcte pour la longueur du contenu avant de poster?

<cffunction name="submitSMS"> 

    <cfhttp url="https://www.google.com/voice/sms/send/" method="post"> 
     <cfhttpparam type="header" name="Content-Length" value="???"> 
     <cfhttpparam type="header" name="Authorization" value="GoogleLogin auth=#SESSION.GoogleAuth#"> 
     <cfhttpparam name="id" value="" type="formfield"> 
     <cfhttpparam name="phoneNumber" value="+1#params.number#" type="formfield"> 
     <cfhttpparam name="text" value="#params.smsMessage#" type="formfield"> 
     <cfhttpparam name="_rnr_se" value="#SESSION.rnr#" type="formfield"> 
    </cfhttp> 

    <cfdump var="#cfhttp.FileContent#"><cfabort> 
</cffunction> 
+0

Si vous modifiez le formulaire pour poster à un autre modèle cf sur votre serveur, et juste vider le message ( = dumps vers cfserver.log), vous verrez qu'il envoie déjà un en-tête de longueur de contenu. Oh, attends, es-tu sur Railo? Je teste avec CF8, donc je ne sais pas ce que fait Railo. Mais, si vous essayez de jeter le poteau, que voyez-vous? –

+0

Merci pour le conseil. J'utilise Railo. Apparemment, Railo n'ajoute pas automatiquement l'en-tête content-length. Mais, le résultat final était d'utiliser Google API api. Il y avait déjà un wrapper de classe java construit pour cela que vous pouvez facilement accéder à CF. – GuiDoody

+0

BTW: Êtes-vous sûr de l'en-tête Content-Length et de Railo? J'aurais pu jurer qu'il crée cet en-tête. – Leigh

Répondre