2009-08-03 157 views
0

我正嘗試使用Google API創建caledar,它只是返回我帳戶中的日曆列表,就像我發送GET請求一樣。這裏是我的代碼:通過ColdFusion在Google API中創建日曆時遇到困難

 <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> 

任何幫助,將不勝感激。

+0

雷卡姆登有一些一些goog le api - 你檢查了他的博客嗎? – Antony 2009-08-03 22:50:26

+0

是的......我正在使用他的api,我正在擴展使用日曆(他的代碼不包含文檔和分析)。我寫了一個函數,它可以成功地獲取帳戶中的日曆。但是,我正在遵循我在所看到的所有網站上看到的示例以及google api頁面,並且似乎無法讓它創建日曆,因爲它忽略了我發送的標頭信息。 – KingErroneous 2009-08-04 15:59:50

+0

我想通了......我沒有通過gSessionId,重定向失去了標題信息......感謝您的幫助。 – KingErroneous 2009-08-04 23:18:21

回答

0

CFXML創建一個ColdFusion XML對象。這是一個內部的CFML構造,對接收API不會有任何意義。我希望你需要將它轉換成文本。

嘗試用ToString()包裝locals.xml。像這樣:

<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

我會通過輸出要發送到文本框中的XML並在屏幕上顯示出來,以驗證它是正確的格式開始:

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

另一個你可以考慮的方法是建立你的XML作爲一個字符串,而不是原生的ColdFusion XML對象,你以後轉換爲字符串:(請注意,我用的,而不是CFXML CFSaveContent)

<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>