与ColdFusion的PUT请求创建Wufoo项目网络挂接(Create Wufoo webhoo

2019-09-27 18:15发布

我在与建立正确的烦恼PUT请求到Wufoo项目。

在我所有的努力我看到了同样的错误:

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一切都应该罚款。

任何想法有什么错我的代码?

提前致谢。

Answer 1:

Wufoo项目请求的参数是“被作为后的参数到Web 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)#" />


Answer 2:

在ColdFusion的,通常,变量名是不区分大小写字母和大写。

<cfset local.request = {
  url = local.webHookURL,
  handshakeKey = local.webHookKey
} />

这给你的钥匙一个struct URLHANDSHAKEKEY

在网络上,可能包括与Wufoo项目REST API,关键是区分大小写的。 在这种情况下,Wufoo项目接受密钥urlhandshakeKey ,和metadata - 在该壳体中

在ColdFusion中,用结构看跌期权(分配)关联数组表示法可以让你保持你想要的精确外壳。

<cfset local.request = { } />
<cfset local.request["url"] = local.webHookURL />
<cfset local.request["handshakeKey"] = local.webHookKey />

这给你的钥匙一个struct urlhandshakeKey



Answer 3:

不熟悉这个API,但应该的URL,handshakekey等是形式post数据?

下面的参数必须按岗位参数到Web API挂钩传递

网址 - 这需要参数表示服务器上的URL,当一个新的条目提交的网页钩将调用。 我们做验证URL和拒绝恶意的URL。

handshakeKey - 此可选参数在网络挂接集成入门文档描述。

元数据= TRUE - 此可选值参数的网页钩沿表格/场发

我读的方式,它看起来像他们所要求的每一个则params的。

该错误提示无法找到URL PARAM,或许这就是它。



文章来源: Create Wufoo webhook with PUT request in ColdFusion