我正在使用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个值。