I'm trying to download a file from Box.com through API using the following code.
<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>
As per documentation it should return 302 Found
as response. And redirects to dl.boxcloud.com for download. But I'm getting 200
as response.
Not sure why I'm getting 200 as response. I need to download the file through the API call. Did I missed anything?
With respect to @Miguel-F's comment, I've surfed and found a solution from Ben Nadel's post.
I've got 200 as response, this is because ColdFusion followed the redirect to dl.boxcloud.com (since by default, the REDIRECT attribute is TRUE), and the redirected request's response is 200.
Actually we should stop the redirect by setting REDIRECT attribute to FALSE
. So that Coldfusion will return actual response to the invoking code.
So I've set REDIRECT attribute to 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>
And now I'm getting 302 found
as response as per the documentation.
With this response, we're having Location
key (in which the code was redirected earlier) in the ResponseHeader. So by using the Location URL we can download the file using CFHEADER and CFCONTENT tags.
Reference : https://www.bennadel.com/blog/934-ask-ben-handling-redirects-with-coldfusion-cfhttp.htm