2017-04-06 30 views
4

我试图从Box.com下载文件通过API使用下面的代码。下载文件虽然框API 2.0给出200作为响应,而不是302发现

<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调用下载文件。我错过了什么吗?

+2

A “200 OK” 是一个很好的响应代码。看着你的转储,它看起来像你要求的'test.jpg'图像正在流式传输给你,内容类型为'image/jpeg',内容长度为'12681'。浏览器通常会为您处理该响应并显示图像(或提供下载)。由于您自己在调用此服务,因此您需要适当处理该响应。 –

回答

2

对于@ Miguel-F的评论,我已经冲浪并找到了一个解决方案,从Ben Nadel's post

我有200响应,这是因为ColdFusion的追踪重定向到dl.boxcloud.com(因为默认情况下,redirect属性为true),并重定向请求的响应是200

其实我们应该通过将REDIRECT属性设置为FALSE来停止重定向。这样Coldfusion会将实际的响应返回给调用代码。

所以我设置REDIRECT属性为FALSE

<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作为响应,按照​​。

enter image description here

有了这个响应,我们遇到Location键(其中代码较早重定向)在ResponseHeader。因此,通过使用位置URL,我们可以使用CFHEADER和CFCONTENT标签下载文件。

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

+1

太棒了!很高兴你有这个工作,并回到这里记录解决方案。请记住在可以的时候将其标记为答案。 –

相关问题