亚马逊致命错误

时间:2016-01-30 15:40:56

标签: php xml amazon-web-services

我正在使用amazon.com产品API。电话是GetMatchingProductForId。当我在调用中键入单个值时,它可以正常工作。当我向我的程序输入一个大文件时,它可以工作,但我偶尔会遇到一个致命的错误:

Fatal Error:Can Only Throw Objects in J:/filepath/client.php on line 1003. 

我不知道可能的错误是什么。当我联系亚马逊开发者支持时,他们表示会调查此问题。 问题可能是用户输入,因为我昨天运行我的程序并且能够获得2797个文件作为响应,但最终收到了相同的错误。当我在测试期间第一次运行我的程序时,根本没有问题。如果有人知道这个错误并且可以解释错误,我将非常感激。

Client.php第992行 - 第1004行:

 for (;;) {
   $response = $this->_httpPost($parameters);
   $status = $response['Status'];
   if ($status == 200) {
       return array('ResponseBody' => $response['ResponseBody'],
      'ResponseHeaderMetadata' => $response['ResponseHeaderMetadata']);
   }
   if ($status == 500 && $this->_pauseOnRetry(++$retries)) {
       continue;
   }
   throw $this->_reportAnyErrors($response['ResponseBody'],
   $status, $response['ResponseHeaderMetadata']);
 }

我没有编辑任何此代码。这来自developer.amazonservices.com

_reportAnyErrors功能:

private function _reportAnyErrors($responseBody, $status, $responseHeaderMetadata, Exception $e =  null)
{
    $exProps = array();
    $exProps["StatusCode"] = $status;
    $exProps["ResponseHeaderMetadata"] = $responseHeaderMetadata;

    libxml_use_internal_errors(true);  // Silence XML parsing errors
    $xmlBody = simplexml_load_string($responseBody);

    if ($xmlBody !== false) {  // Check XML loaded without errors
        $exProps["XML"] = $responseBody;
        $exProps["ErrorCode"] = $xmlBody->Error->Code;
        $exProps["Message"] = $xmlBody->Error->Message;
        $exProps["ErrorType"] = !empty($xmlBody->Error->Type) ? $xmlBody->Error->Type : "Unknown";
        $exProps["RequestId"] = !empty($xmlBody->RequestID) ? $xmlBody->RequestID : $xmlBody->RequestId; // 'd' in RequestId is sometimes capitalized
    } else { // We got bad XML in response, just throw a generic exception
        $exProps["Message"] = "Internal Error";
        continue;
    }
}

值:

20373001862
20373002678
20373002685
20373002937
20373003002
20373003583
20373003644
20373003651
20373003675
20373003682
20373003781 
20373003811
20373003828
20373003835
20373003842
20373003859
20373003866
20373003873
20373003880
20373003897
20373003903
20373005006

使用这些值,它会在第三个文件上崩溃,这将是第20个值。

0 个答案:

没有答案