2009-08-03 3 views
0

Ich versuche, ein Caledar mit der Google API zu erstellen, und es gibt nur die Liste der Kalender in meinem Konto zurück, genau wie ich eine GET-Anfrage gesendet habe. Hier ist mein Code:Fehler beim Erstellen des Kalenders in Google API über ColdFusion

 <cfxml variable="locals.xml"> 
      <cfoutput> 
      <entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" xmlns:gCal="http://schemas.google.com/gCal/2005"> 
       <title type="text">#arguments.argTitle#</title> 
       <summary type="text">#arguments.argSummary#</summary> 
       <cfif len(arguments.argTimezone)><gCal:timezone value="#arguments.argTimezone#"></gCal:timezone></cfif> 
       <gCal:hidden value="false"></gCal:hidden> 
       <gCal:accesslevel value="owner" /> 
       <gCal:color value="#arguments.argColor#"></gCal:color> 
       <gd:where rel='' label='' valueString='Oakland'></gd:where> 
      </entry> 
      </cfoutput> 
     </cfxml> 

     <cfhttp url="#variables.baseURL#/default/owncalendars/full" method="post" redirect="false" multiparttype="related" charset="utf-8"> 
      <cfhttpparam type="header" name="Authorization" value="GoogleLogin auth=#getAuth(variables.serviceName)#"> 
      <cfhttpparam type="header" name="Content-Type" value="application/atom+xml"> 
      <cfhttpparam type="header" name="GData-Version" value="2"> 
      <cfhttpparam type="body" value="#trim(locals.xml)#"> 
     </cfhttp> 

Jede Hilfe wäre willkommen.

+0

Ray Camden hat einige irgendwie gut le api - hast du seinen Blog überprüft? – Antony

+0

Ja ... Ich verwende seine API, die ich erweitere, um Kalender zu verwenden (sein Code tut Dokumente und Analysen). Ich habe eine Funktion geschrieben, die die Kalender erfolgreich in ein Konto bringt. Allerdings befolge ich die Beispiele, die ich auf allen Seiten sehe, die ich sehe, und die Google API-Seite, und ich kann es anscheinend nicht schaffen, einen Kalender zu erstellen, als ob ich die Header-Informationen, die ich sende, ignoriere. – KingErroneous

+0

Ich habe es herausgefunden ... Ich habe die gSessionId nicht übergeben, und die Umleitung hat die Header-Informationen verloren ... danke für deine Hilfe trotzdem. – KingErroneous

Antwort

0

CFXML erstellt ein ColdFusion-XML-Objekt. Das ist ein internes CFML-Konstrukt und wird der empfangenden API nichts bedeuten. Ich erwarte, dass Sie es in Text konvertieren müssen.

Versuchen Sie, locals.xml mit einem ToString() zu umbrechen. Wie so:

<cfhttp url="#variables.baseURL#/default/owncalendars/full" method="post" 
    redirect="false" multiparttype="related" charset="utf-8"> 
    <cfhttpparam type="header" name="Authorization" value="GoogleLogin 
     auth=#getAuth(variables.serviceName)#"> 
    <cfhttpparam type="header" name="Content-Type" 
     value="application/atom+xml"> 
    <cfhttpparam type="header" name="GData-Version" value="2"> 
    <cfhttpparam type="body" value="#trim(toString(locals.xml))#"> 
</cfhttp> 
+0

Ich habe diese Änderung gemacht, und ich bekomme immer noch einen 200 und es wird kein neuer Kalender erstellt. – KingErroneous

+0

Ah. Na dann. Ich fürchte, ich weiß nicht genug über die Google-APIs, um etwas konstruktiver zu bieten. – ale

0

I durch Ausgabe des XML beginnen würden Sie in ein Textfeld sind das Senden und Anzeigen auf dem Bildschirm, um sicherzustellen, dass es im richtigen Format:

<textarea rows="30" cols="120"> 
    <cfoutput>#trim(toString(locals.xml))#</cfoutput> 
</textarea> 

Another Ansatz, den Sie vielleicht in Betracht ziehen würden, um Ihre XML als String zu bauen, keine native Coldfusion-XML-Objekt, das Sie später in eine Zeichenfolge konvertieren: (Hinweis, dass ich cfsavecontent statt CFXML bin mit)

<cfsavecontent variable="locals.xml"> 
    <cfoutput> 
    <entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" xmlns:gCal="http://schemas.google.com/gCal/2005"> 
     <title type="text">#arguments.argTitle#</title> 
     <summary type="text">#arguments.argSummary#</summary> 
     <cfif len(arguments.argTimezone)><gCal:timezone value="#arguments.argTimezone#"></gCal:timezone></cfif> 
     <gCal:hidden value="false"></gCal:hidden> 
     <gCal:accesslevel value="owner" /> 
     <gCal:color value="#arguments.argColor#"></gCal:color> 
     <gd:where rel='' label='' valueString='Oakland'></gd:where> 
    </entry> 
    </cfoutput> 
</cfsavecontent> 
+0

Ich habe es in einen cfsavecontent geändert und es funktioniert immer noch nicht. Tatsächlich habe ich das Beispiel auf der Google API-Seite geändert, und das funktioniert auch nicht. – KingErroneous

+0

Können Sie genauer sein? "Es funktioniert nicht" hilft nicht viel. –