我正在爲Wufoo構建正確的PUT request而遇到麻煩。在ColdFusion中創建具有PUT請求的Wufoo webhook
在我所有的努力我看到了同樣的錯誤:
404 A WebHook must contain a url parameter.
這裏是版本JSON數據類型:
<cfset local.action = "forms/#local.formHash#/webhooks.json" />
<cfset local.request = {"url" : local.webHookURL, "handshakeKey" : local.webHookKey} />
<cfset local.request["handshakeKey"] = local.webHookKey />
<cfhttp url="#local.baseURL##local.action#" method="put" username="#local.apiKey#" password="#local.apiPass#">
<cfhttpparam type="header" name="Content-Type" value="application/json; charset=UTF-8" />
<cfhttpparam type="body" value="#SerializeJSON(local.request)#" />
</cfhttp>
同樣的錯誤使用file
時:
<cfset local.action = "forms/#local.formHash#/webhooks.json" />
<cfset local.request = {"url" : local.webHookURL, "handshakeKey" : local.webHookKey} />
<cffile action="write" file="#GetTempDirectory()#webhook.json" output="#SerializeJSON(local.request)#">
<cfhttp url="#local.baseURL##local.action#" method="put" username="#local.apiKey#" password="#local.apiPass#">
<cfhttpparam type="header" name="Content-Type" value="application/json; charset=UTF-8" />
<cfhttpparam type="file" mimetype="application/json" name="json" file="#GetTempDirectory()#webhook.json" />
</cfhttp>
UPDATE:
爲了使代碼在ACF的工作(我的代碼在只有Railo)使用這個語法要求:
<cfset local.request = {} />
<cfset local.request["url"] = local.webHookURL />
<cfset local.request["handshakeKey"] = local.webHookKey />
兩種方法應該產生區分大小寫鍵相同JSON。
而且我已經試過了XML數據類型:
<cfset local.action = "forms/#local.formHash#/webhooks.xml" />
<cfsavecontent variable="putXML">
<cfoutput>
<?xml version="1.0" encoding="UTF-8"?>
<WebHookPutRequest>
<url>#XMLFormat(local.webHookURL)#</url>
<handshakeKey>#XMLFormat(local.webHookKey)#</handshakeKey>
</WebHookPutRequest>
</cfoutput>
</cfsavecontent>
<cffile action="write" file="#GetTempDirectory()#webhook.xml" output="#Trim(putXML)#">
<cfhttp url="#local.baseURL##local.action#" method="put" username="#local.apiKey#" password="#local.apiPass#">
<cfhttpparam type="header" name="Content-Type" value="application/xml; charset=UTF-8" />
<cfhttpparam type="body" value="#putXML#" />
</cfhttp>
在這裏我不知道如果我的XML是正確的,但對於JSON一切都應該罰款。
任何想法我的代碼有什麼問題?
在此先感謝。
第二個建議工作!非常感謝,正義! – Sergii 2010-10-20 16:59:16
相關問題:我將如何發送帶'DELETE' reqest的'hash'屬性? 'body'類型不適用於DELETE,無法使'formField'工作。看到這個文檔http://wufoo.com/docs/api/v3/webhooks/delete/ – Sergii 2010-10-20 17:19:17
ColdFusion理解'type =「FormField」'僅適用於'POST'請求。可以在'DELETE'請求中包含實體,就像'PUT'請求一樣(參見http://stackoverflow.com/questions/299628/is-an-entity-body-allowed-for-an-http-delete-請求),但是您將不得不使用相同的技術來包含主體,因爲您需要將主體包含在「PUT」請求中。如果您需要'application/x-www-form-urlencoded'類型的主體,那麼您應該(在ColdFusion中)使用本答案中描述的技術。 – yfeldblum 2010-10-20 18:25:19