PEAR の Amazon.php でエラーコード403 が返ってきたときのエラー判別方法
PEARのAmazon.phpを用いて Amazon Product Advertising API を呼び出したときに、何等かの理由で「Amazon returned invalid HTTP response code」というエラーが返ることがあります。
普通はサーバ時刻がずれているときにエラーが発生するようですが、それ以外の理由でエラーが発生することもあります。
このとき、Amazon API の側ではエラー内容を応答ボディに記載していますが、Amazon.php では応答コードしか拾わないので、APIの呼び出し側ではエラー理由が判断できません。
Amazon.phpの「function _sendHttpRequest($url)」の中の以下の行を以下のように修正することにより、エラー内容の捕捉が可能となります。
※ 見やすいようにインデントを減らしています。
※コード修正は自己責任でお願いします。
修正前)
if ($http->getResponseCode() != 200){ return PEAR::raiseError('Amazon returned invalid HTTP response code ' . $http->getResponseCode()); }
修正例)
if ($http->getResponseCode() != 200){ //return PEAR::raiseError('Amazon returned invalid HTTP response code ' . $http->getResponseCode()); return PEAR::raiseError('Amazon returned invalid HTTP response code ' . $http->getResponseCode() . ' ' . $http->getResponseBody() ); }