2014-03-07 29 views
1

在使用API​​時,我需要向URL發出PUT請求,並且需要將一些參數作爲POST參數傳遞。ColdFusion中的PUT請求問題10

本地我創建了2個文件calling.cfm和caller.cfm,用PUT請求測試cfhttp。 但每次它拋出錯誤The request has exceeded the allowable time limit Tag: cfhttp

caller.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#"> 

calling.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"Adobe Forum,有人提到的ColdFusion發送請求主體與PUT和DELETE請求,因此我們可以將請求主體格式化爲表單字段(或一系列表單字段)。我已經試過<cfhttpparam type="body" name="fname" value="#urlEncodedFormat("Deepak")#" >。仍然顯示相同的錯誤。

我正在使用ColdFusion 10.請讓我知道如果我做錯了什麼。

+0

任何人請提出我的cfhttp調用什麼錯誤,它掛起我的coldfusion服務器 –

回答

3

<cfhttpparam>在type =「body」時不會對name屬性做任何事情。如果你自己定身,你應該發送類似下面的身體:

fname=Deepak&otherparam=foo 

正如通常的情況一樣,Ben Nadel has your back here。 CF不會爲PUT或DELETE請求上的FORM範圍處理您,因此您需要自己處理getHttpRequestData().content才能獲取發送的值,但您可以使用方法in this blog post來實現該值。

+0

如何通過'put'請求參數在formfield或表單範圍中傳遞參數到API。 –

+0

此外,爲什麼我得到請求超時錯誤,而一切工作正常'發送和獲取'請求。 –

+0

你的意思是你自己的API?你有兩個選擇。首先,嘗試使用包含的鏈接解析正文,然後更新FORM範圍。其次,您的API不應該直接引用FORM範圍。這是處理請求的控制器代碼的工作。你真正的商業邏輯應該只是期待一個結構,而不在意它是否來自於它。我認爲你應該使用選項2。 – barnyr