【问题标题】:Issue with PUT request in ColdFusion 10ColdFusion 10 中的 PUT 请求问题
【发布时间】:2014-04-10 05:37:57
【问题描述】:

在使用 API 时,我需要向 URL 发出 PUT 请求,并且需要将一些参数作为 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>

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

我已尝试使用 &lt;cfhttpparam type="body" name="fname" value="#urlEncodedFormat("Deepak")#" &gt; 。仍然显示相同的错误。

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

【问题讨论】:

  • 任何人请提出我的 cfhttp 调用有什么错误,它挂起我的coldfusion服务器

标签: coldfusion coldfusion-10 cfhttp


【解决方案1】:

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

fname=Deepak&otherparam=foo

通常情况下,Ben Nadel has your back here。 CF 不会在 PUT 或 DELETE 请求中为您处理 FORM 范围,因此您需要自己处理 getHttpRequestData().content 以获取发送的值,但您可能可以使用方法 in this blog post 来实现这一点。

【讨论】:

  • 如何通过put 请求在表单域或表单范围内向API 传递参数。
  • 还有为什么我收到请求超时错误,而 post and get 请求一切正常。
  • 你的意思是你自己的API?你有两个选择。首先,尝试使用我包含的链接解析正文,然后更新 FORM 范围。其次,您的 API 不应真正直接引用 FORM 范围。这是处理请求的控制器代码的工作。您真正的业务逻辑应该只期望一个结构而不关心它是否来自。在我看来,您应该使用选项 2。
  • 如果您想查看线程挂起的内容,请使用此处的说明:stackoverflow.com/a/16117508/826714 - 发布您的堆栈转储,我们可能会为您提供进一步的帮助
  • 我没有使用自己的API,我需要向YesMail API提出请求
猜你喜欢
  • 2020-06-22
  • 2023-03-12
  • 2021-01-10
  • 2020-06-08
  • 2013-08-12
  • 2012-08-11
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多