1

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の場合はすべて問題ないはずです。

私のコードの何が問題になっていますか?

前もって感謝します。

4

3 に答える 3

3

Wufoo、パラメーターを「ポストパラメーターとしてWebHookAPIに渡す」ように要求します。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)#" />
于 2010-10-20T16:53:00.440 に答える
1

一般に、ColdFusionでは、変数名は大文字と小文字を区別せず、大文字になります。

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

これにより、キーURLと。を含む構造体が得られますHANDSHAKEKEY

Webでは、おそらくWufoo REST APIを含めて、キーでは大文字と小文字が区別されます。この場合、Wufooはそのケーシング内のキー、、、および-を受け入れます。urlhandshakeKeymetadata

ColdFusionでは、struct puts(割り当て)を使用した連想配列表記により、必要な正確な大文字小文字を維持できます。

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

これにより、キーurlと。を含む構造体が得られますhandshakeKey

于 2010-10-20T16:35:52.910 に答える
0

このAPIに精通していませんが、URL、ハンドシェイクキーなどをフォームポストパラメーターにする必要がありますか?

次のパラメーターは、ポストパラメーターとしてWebHookAPIに渡す必要があります

url-この必須パラメーターは、新しいエントリが送信されたときにWebHookが呼び出すサーバー上のURLを表します。URLを検証し、不正な形式のURLを拒否します。

handshakeKey-このオプションのパラメーターは、WebHook統合入門ドキュメントで説明されています。

Metadata=true-フォーム/フィールドに沿って送信するWebフックのこのオプションの値パラメーター

私がそれを読んだ方法では、彼らが各パラメータを求めているように見えます。

エラーは、URLパラメータが見つからないことを示唆しています。おそらくそれだけです。

于 2010-10-20T16:45:04.513 に答える