2016-03-16 3 views
3

В приведенном ниже блоке сценария на ColdFusion 11 имеет GetHttpRequestData().content, как приветли ColdFusion 11 поддержки содержимого тела для HTTP DELETE глагола

Если изменить глагол УДАЛИТЬ он пуст.

Итак ...

  • ли ColdFusion не поддерживает это при выполнении запросов через cfhttp?
  • Это неправильный путь?
  • Есть ли обходной путь?

Код:

cfhttp(method="POST", charset="utf-8", url="http://x/showrequest.cfm", result="result") { 
    cfhttpparam(name="body", type="body", value="hello"); 
} 

writeOutput(result.filecontent);abort; 
+1

Содержание тела не требуется для запросов DELETE - http://stackoverflow.com/a/299696/1636917 –

+0

@ Мигель-F - Правда, хотя я подозреваю, что некоторые API, действительно используют его. Похоже, что OP может работать с таким API и что cfhttp может не вернуть значение (что меня не удивит). – Leigh

+0

Возможно, вы правы @Leigh. Трудно сказать с отсутствием деталей в вопросе. –

ответ

1

Работа вокруг было использовать Java (дрожи). Я уверен, что есть вспомогательные библиотеки, чтобы сделать это более лаконично, но вот оно.

<cfscript> 
var u = createObject("java", "java.net.URL").init("https://api.cloudflare.com/client/v4/zones/#site.zoneId#/purge_cache"); 
var req = u.openConnection(); 
req.setRequestMethod("DELETE"); 
req.setDoOutput(true); 
req.setRequestProperty("Content-Type", "application/json"); 
req.setRequestProperty("X-Auth-Email", "xxxxx"); 
req.setRequestProperty("X-Auth-Key", "xxxx"); 
var os = req.getOutputStream(); 

os.write(javaCast("string",'{"files":#serializeJSON(urls)#}').getBytes("UTF-8")); 
os.close(); 
ret = req.getResponseMessage(); 

var i = req.getInputStream(); 
var br = createObject("java", "java.io.BufferedReader").init(createObject("java", "java.io.InputStreamReader").init(i)); 
var sb = createObject("java", "java.lang.StringBuilder").init(); 

var line = br.readLine(); 
while(!isNull(line)){ 
    sb.append(line); 
    line = br.readLine(); 
} 
req.disconnect(); 


</cfscript> 
<cfdump var="req.getResponseCode() = #req.getResponseCode()#"> 
<cfdump var="#ret#"> 
<cfdump var="#sb.toString()#"> 
+0

Не забудьте проверить код состояния и поток ошибок, если необходимо, чтобы вы знали, произошла ли непредвиденная ошибка. http://stackoverflow.com/questions/18153249/how-do-i-see-the-message-for-a-http-response-code-406-exception/18154731#18154731 – Leigh

Смежные вопросы