通过Box API 2.0下载文件,给出200作为响应,而不是找到302

时间:2017-04-06 11:31:49

标签: coldfusion box-api box boxapiv2

我尝试使用以下代码通过API从Box.com下载文件。

<cfhttp url="https://api.box.com/2.0/files/(FILE_ID)/content/" method="GET" redirect="true" >
<cfhttpparam type="header" name="Authorization" value="Bearer (DEVELOPER_TOKEN)">
</cfhttp>

根据文档,它应该返回302 Found作为回复。并重定向到dl.boxcloud.com进行下载。但我得到200作为回应。

enter image description here

不确定为什么我得到200作为回应。我需要通过API调用下载文件。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

关于@ Miguel-F的评论,我已经浏览并找到Ben Nadel's post的解决方案。

我得到200作为回复,这是因为ColdFusion跟随重定向到dl.boxcloud.com(因为默认情况下,REDIRECT属性为TRUE),并且重定向请求的响应为200。

实际上我们应该通过将REDIRECT属性设置为FALSE来停止重定向。因此Coldfusion将返回对调用代码的实际响应。

所以我已将REDIRECT属性设置为<cfhttp url="https://api.box.com/2.0/files/(FILE_ID)/content/" method="GET" redirect="false" > <cfhttpparam type="header" name="Authorization" value="Bearer (DEVELOPER_TOKEN)"> </cfhttp>

302 found

现在我根据documentation获得Location作为回复。

enter image description here

通过此响应,我们在ResponseHeader中拥有""key"": null 密钥(之前代码被重定向)。因此,通过使用位置URL,我们可以使用CFHEADER和CFCONTENT标签下载文件。

参考: https://www.bennadel.com/blog/934-ask-ben-handling-redirects-with-coldfusion-cfhttp.htm