在ColdFusion中使用PUT请求创建Wufoo webhook

我在为Wufoo构建正确的PUT请求时遇到了麻烦。 在我的所有尝试中,我看到同样的错误:
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>
更新: 要使代码在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,一切都应该没问题。 任何想法我的代码有什么问题? 提前致谢。     
已邀请:
Wufoo要求参数“作为post参数传递给Web Hook API”。尝试使用
application/x-www-form-urlencoded
编码作为请求的正文。在ColdFusion中,您可以使用
<cfhttpparam type="FormField" />
执行此操作。
<cfhttpparam type="FormField" name="url" value="#local.webHookURL#" />
<cfhttpparam type="FormField" name="handshakeKey" value="#local.webHookKey#" />
但是,ColdFusion用
PUT
方法拒绝这种技术。您可以使用以下方法自行编码身体:
<cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded; charset=UTF-8" />
<cfhttpparam type="body" value="url=#UrlEncode(local.webHookURL)#&handshakeKey=#UrlEncode(local.webHookKey)#" />
    
在ColdFusion中,通常,变量名称不区分大小写且大写。
<cfset local.request = {
  url = local.webHookURL,
  handshakeKey = local.webHookKey
} />
这为您提供了一个带键
URL
HANDSHAKEKEY
的结构。 在Web上,可能包括Wufoo REST API,密钥区分大小写。在这种情况下,Wufoo接受键
url
handshakeKey
metadata
- 在那个大写中。 在ColdFusion中,带有struct puts(赋值)的关联数组表示法可以让你保持你想要的精确套管。
<cfset local.request = { } />
<cfset local.request["url"] = local.webHookURL />
<cfset local.request["handshakeKey"] = local.webHookKey />
这为您提供了一个带键
url
handshakeKey
的结构。     
不熟悉这个api但是url,handshakekey等是否应该形成post params?   必须包含以下参数   作为post参数传递给Web   Hook API      url - 这个必需参数   表示服务器上的URL   Web Hook会在新的时候调用   提交条目。我们确实验证了   网址并拒绝格式错误的网址。      handshakeKey - 此可选参数   在Web Hook中描述   整合入门   文档。      metadata = true - 此可选值   参数Web Hook要发送   形式/场 我读的方式,看起来像他们在问  对于每个参数。 该错误表明它无法找到URL参数,也许就是这样。     

要回复问题请先登录注册