2009-08-03 4 views
0

Google API를 사용하여 캘린더를 만들려고하는데 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

레이 캠든은 몇 가지가 있습니다 : 당신이 고려해 볼 수 있습니다 접근 방식은 나중에 문자열로 변환하는 문자열이 아닌 고유의 ColdFusion XML 객체로 XML을 구축하는 것입니다 일종의 goog le api - 그의 블로그를 확인해 봤어? – Antony

+0

예 ... 그의 api를 사용하고 있습니다.이 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

아. 그럼. 나는 더 건설적인 것을 제공하기 위해 구글 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

좀 더 구체적으로 말씀해 주시겠습니까? "효과가 없다"는 것은별로 도움이되지 않습니다. –

관련 문제