2017-04-06 20 views
4

Box.comから次のコードを使用してファイルをダウンロードしようとしています。Box API 2.0を使用してファイルをダウンロードすると、302の代わりに200が返されます。

<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

"200 OKは、" 良好な応答コードです。あなたのダンプを見れば、 'test.jpg 'があなたにコンテンツタイプ' image/jpeg'とコンテンツ長 '12681'でストリームされているように見えます。ブラウザは通常、あなたのためにその応答を処理し、画像(またはダウンロードの申し出)を表示します。このサービスを自分で呼び出すので、応答を適切に処理する必要があります。 –

答えて

2

@ Miguel-Fのコメントに関して、私はサーフィンして、Ben Nadel's postから解決策を見つけました。

私はColdFusionが(デフォルトでは、redirect属性がTRUEであるため)dl.boxcloud.comへのリダイレクトを踏襲し、リダイレクト要求の応答が実際に200

あるので、これは、レスポンスとして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

、我々はResponseHeader中(コードが先にリダイレクトされた)Locationキーを抱えています。したがって、ロケーションURLを使用して、CFHEADERタグとCFCONTENTタグを使用してファイルをダウンロードできます。

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

+1

素晴らしい!うまくいけばうれしく思います。できるだけそれを答えとしてマークすることを忘れないでください。 –

関連する問題