ColdFusion 11支持HTTP DELETE动词的正文内容吗?

3

在ColdFusion 11上,以下脚本块使用GetHttpRequestData().content作为hello。

如果我将动词更改为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请求不需要主体内容 - https://dev59.com/UHVC5IYBdhLWcg3wbQfA#299696 - Miguel-F
@Miguel-F - 是的,不过我怀疑一些API可能会使用它。听起来OP可能正在使用这样的API,而cfhttp可能不会返回该值(这并不让我感到惊讶)。 - Leigh
你可能是正确的,@Leigh。由于问题缺乏细节,很难确定。 - Miguel-F
API是Cloudflare的,它需要一个消息体来执行删除操作。https://api.cloudflare.com/#zone-purge-individual-files-by-url-and-cache-tags - AdiFatLady
你有查询过 bug 数据库吗?猜测一下,我怀疑 cfhttp 不会在 DELETE 请求中发送“body”。由于这不是必需的功能,可能没有被实现。如果是这种情况,你可能需要使用另一个工具,例如 curl、urlconnection 等等... - Leigh
1个回答

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()#">

不要忘记检查状态码和错误流,如果需要的话,这样你就知道是否发生了意外错误。http://stackoverflow.com/questions/18153249/how-do-i-see-the-message-for-a-http-response-code-406-exception/18154731#18154731 - Leigh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接