Поддерживает ли ColdFusion 11 содержимое тела для глагола HTTP DELETE?
Блок скриптов ниже на ColdFUsion 11 имеет GetHttpRequestData().content
как привет
Если я изменю глагол на УДАЛИТЬ, он будет пустым.
Так...
- 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 ответ
Обходной путь должен был использовать 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()#">