2009-08-03 15 views
0

Google APIを使用してカレンダーを作成しようとしています.GETリクエストを送信したときと同じように、アカウントのカレンダーリストを返します。ここに私のコードです:Google APIで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> 

私は助けていただければ幸いです。

+0

レイ・カムデンはいくつかを持っている:あなたは検討するかもしれないアプローチは、文字列ではなく、後で文字列に変換するネイティブのColdFusion XMLオブジェクトとして、あなたのXMLを構築することです一種のgoog le api - あなたは彼のブログをチェックしましたか? – Antony

+0

はい...私は彼のAPIを使用しています。これは、カレンダーを使用するように拡張しています(コードはドキュメントとアナリティクス)。アカウントのカレンダーを正常に取得する関数を作成しました。しかし、私が見ているすべてのサイトとgoogleのapiページに表示されている例に従っています。送信しているヘッダー情報を無視して、カレンダーを作成できないようです。 – KingErroneous

+0

私はそれを理解しました...私はgSessionIdを渡していないし、リダイレクトはヘッダー情報を失っていた...とにかく助けてくれてありがとう。 – KingErroneous

答えて

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

私はその変更を行いましたが、私はまだ200を得て、新しいカレンダーは作成されません。 – KingErroneous

+0

ああ。じゃあ。もっと建設的なものを提供するためにGoogle APIについて十分に知りません。 – ale

0

私はそれが正しい形式でありますことを確認するために、テキスト・ボックスに送信すると、画面上に表示しているXMLを出力することにより開始する:

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

別(私が代わりに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> 
+0

私はそれをcfsavecontentに変更しましたが、それでも動作しません。実際には、Google APIページの例に変更しましたが、どちらも機能しません。 – KingErroneous

+0

あなたはもっと具体的になりますか? 「うまくいかない」とはあまり役に立たない。 –

関連する問題