2

在使用 API 时,我需要向PUTURL 发出请求,并且需要将一些参数作为 POST 参数传递。

在本地,我创建了 2 个文件 call.cfm 和 caller.cfm 来测试带有PUT请求的 cfhttp。但每次它都抛出错误The request has exceeded the allowable time limit Tag: cfhttp

调用者.cfm

<cfhttp url="http://cflocal.com/jquerySliderApp/calling.cfm" method="put">
     <cfhttpparam type="header" name="Content-Type" value="application/x-www-form- urlencoded; charset=UTF-8" />
     <cfhttpparam type="body" value="Deepak" >  
</cfhttp>   
<cfdump var="#cfhttp#">

呼叫.cfm

<cfloop collection="#FORM#" item="i">
   <cfoutput>FORM SCOPE:#form[i]#</cfoutput>
</cfloop>

<cfloop collection="#URL#" item="i">
  <cfoutput>URL SCOPE:#URL[i]#</cfoutput>
</cfloop>

type="body"Adob​​e 论坛中传递参数,有人提到 ColdFusion 发送带有 PUT 和 DELETE 请求的请求正文,因此我们可以将请求正文格式化为表单字段(或一系列表单字段)。

我试过了<cfhttpparam type="body" name="fname" value="#urlEncodedFormat("Deepak")#" >。仍然显示相同的错误。

我正在使用 ColdFusion 10。如果我做错了什么,请告诉我。

4

1 回答 1

4

<cfhttpparam>当 type="body" 时,不会对 name 属性做任何事情。如果您自己设置正文,您应该发送如下内容作为正文:

fname=Deepak&otherparam=foo

与往常一样,本·纳德尔 ( Ben Nadel) 支持您。CF 不会为您处理 PUT 或 DELETE 请求的 FORM 范围,因此您需要getHttpRequestData().content自己处理才能获取发送的值,但您可能可以使用此博客文章中的方法来实现这一点。

于 2014-03-07T07:32:30.553 回答