更新:私はなんとかこのことを機能させることができました!
結局のところ、適切な応答を得るには、呼び出しで安全なチケットを送信する必要があります。それなしでポスターで機能した理由がわかりません。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 ゲートウェイを介して) それらに POST する必要があります。ヘッダーでトークンを指定する必要があります。
私は 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 の Poster アドオンを試してみました。
これで問題なく呼び出しを行うことができますが、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>
そしてポスターには、ここに私が入力しているものがあります:
URL: https://workplace.intuit.com/db/main
コンテンツ タイプ: xml
コンテンツ:
<qdbapi>
<apptoken>c4abnsdepseds7hdzurwvjjb4m</apptoken>
<email>jimmyhogoboom@gmail.com</email>
</qdbapi>
および 1 つのヘッダー:
名前: QUICKBASE-ACTION
値: API_GetUserInfo
これらの設定により、正しい応答が得られます。
私がcoldfusionコードで間違っていることについて何か考えはありますか?