Проблема создания календаря в Google API через ColdFusion - PullRequest
0 голосов
/ 03 августа 2009

Я пытаюсь создать каледар, используя Google API, и он просто возвращает список календарей в моей учетной записи, как я отправил запрос GET. Вот мой код:

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

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 04 августа 2009

Я бы начал с вывода отправляемого вами XML-текста в текстовое поле и отображения его на экране, чтобы убедиться, что он в правильном формате:

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

Другим подходом, который вы могли бы рассмотреть, было бы создание XML-кода в виде строки, а не нативного XML-объекта ColdFusion, который вы позже конвертируете в строку: (обратите внимание, что я использую CFSaveContent вместо CFXML)

<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 голосов
/ 03 августа 2009

CFXML создает объект ColdFusion XML. Это внутренняя конструкция CFML, и она ничего не будет значить для принимающего API. Я ожидаю, что вам нужно преобразовать его в текст.

Попробуйте обернуть locals.xml в ToString (). Вот так:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...