UPDATE: Мне удалось получить эту работу!POST вызов API xml (для Intuit) с использованием Coldfusion
Оказывается, вам НЕОБХОДИМО отправить безопасный билет с вызовом, чтобы получить правильный ответ. Я понятия не имею, почему он работал в Poster без него. Есть пара других параметров, которые требуются, которые 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.
Я пытаюсь отправить запрос на API Intuit с Coldfusion. Вызов должен быть отправлен им (через шлюз SAML). В заголовке должен быть указан токен.
У меня действительно нет опыта работы с cfhttp, и я полностью смущен этой всей ситуацией вызова API. Мне нужна помощь.
Как я могу отформатировать тег cfhttp, чтобы иметь этот токен в заголовке?
<cfxml variable="API_GetUserInfo">
<qdbapi>
<apptoken>c4abnsdepseds7hdzurwvjjb4m</apptoken>
<email>[email protected]</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>
И Плакат, вот что я вхожу:
URL: https://workplace.intuit.com/db/main
Тип контента: XML
Содержание:
<qdbapi>
<apptoken>c4abnsdepseds7hdzurwvjjb4m</apptoken>
<email>[email protected]</email>
</qdbapi>
и 1 Заголовок:
Имя: QuickBase-ACTION
Значение: API_GetUserInfo
С этими настройками я получаю правильный ответ.
Любые идеи относительно того, что я делаю неправильно с кодом coldfusion?
какой токен? c4abnsdepseds7hdzurwvjjb4m? в заголовке, в каком поле? возможно, захотят сначала протестировать свой API с помощью Плаката https://addons.mozilla.org/en-US/firefox/reviews/display/2691, а затем эмулировать тот же вызов с CFHTTP. – Henry
спасибо. Я сделаю это. – Jimmy
http://www.postbin.org/ также хорош для отладки – Sergii