更新:我设法让这个东西工作!
事实证明,您需要在通话中发送安全票证才能获得正确的响应。我不知道为什么它在没有它的情况下在海报中起作用。还有一些其他参数是 ColdFusion 默认情况下显然不发送的。
这是一个工作电话:
<!---MyTicketValue is sent over from the SAML gateway--->
<cfset myTicket = #cookie.MyTicketValue#>
<!---here we set the XML for the POST--->
<cfsavecontent variable="APIxml"><qdbapi><ticket><cfoutput>#myTicket#</cfoutput></ticket><apptoken>c4abnsde36pse7hzurwvjjb4m</apptoken></qdbapi></cfsavecontent>
<!---and this is the post with all necessary headers (don't ask me why they're needed)--->
<cfhttp url="https://workplace.intuit.com/db/main" method="POST" result="objGet">
<cfhttpparam type="header" name="Accept-Encoding" value="gzip,deflate"/>
<cfhttpparam type="header" name="Keep-Alive" value="115" />
<cfhttpparam type="header" name="QUICKBASE-ACTION" value="API_GetUserInfo" />
<cfhttpparam type="header" name="Content-Type" value="application/xml; charset=UTF-8" />
<cfhttpparam type="body" value="#APIxml#" />
</cfhttp>
这将返回来自 Intuit Workplace 的完美响应。
我正在尝试使用 Coldfusion 向 Intuit 的 API 发送调用。必须将调用发布给他们(通过 SAML 网关)。必须在标头中提供令牌。
我真的没有使用 cfhttp 的经验,并且对整个 API 调用情况完全感到困惑。我需要一些非常基本的帮助。
基本上,如何格式化 cfhttp 标记,以便可以在标头中包含此标记?
<cfxml variable="API_GetUserInfo">
<qdbapi>
<apptoken>c4abnsdepseds7hdzurwvjjb4m</apptoken>
<email>email@hotmail.com</email>
</qdbapi>
</cfxml>
<cfhttp
url="https://workplace.intuit.com/db/main"
method="POST"
result="objGet">
<cfhttpparam
type="header"
name="Header"
value="QUICKBASE-ACTION:API_GetUserInfo"
/>
<cfhttpparam
type="xml"
name="API_GetUserInfo"
value="#API_GetUserInfo#"
/>
</cfhttp>
后来,我尝试了 Firefox 的海报插件。
我可以让电话正常工作,但是当我尝试在 CF 中复制它时,我仍然无法得到响应。
这是更新的代码:
<cfhttp url="https://workplace.intuit.com/db/main" method="POST" result="objGet" >
<cfhttpparam type="header" name="QUICKBASE-ACTION" value="API_GetUserInfo" />
<cfhttpparam type="formfield" name="xml" value="#API_GetUserInfo#" />
</cfhttp>
在海报中,这就是我要输入的内容:
网址:https ://workplace.intuit.com/db/main
内容类型:xml
内容:
<qdbapi>
<apptoken>c4abnsdepseds7hdzurwvjjb4m</apptoken>
<email>jimmyhogoboom@gmail.com</email>
</qdbapi>
和 1 个标题:
名称: QUICKBASE-ACTION
值:API_GetUserInfo
通过这些设置,我得到了正确的响应。
关于我在冷融合代码上做错了什么的任何想法?