Получение внутренней ошибки в запросах API Amazon Marketplace
Я загрузил Amazon Marketplace SDK, и я пробую один из образцов в каталоге samples. Тем не менее, я получаю исключение со следующими деталями, когда я пытаюсь это сделать:
Caught Exception: Internal Error
Response Status Code: 0
Error Code:
Error Type:
Request ID:
XML: RequestId: , ResponseContext: , Timestamp:
ResponseHeaderMetadata:
У меня также включен CURL с SSL. Что я делаю не так?
3 ответов
этот ответ на будущее. Подробные сведения об устранении неполадок см. В разделе Комментарии к вопросу.
пустой ответ указывает на неудачное подключение к серверу Amazon. В этом случае HTTP работал нормально, но HTTPS-нет. Как выключить CURLOPT_SSL_VERIFYPEER
в настройках cURL решена проблема, похоже, что сервер Amazon не использовал действительный сертификат SSL.
С CURLOPT_SSL_VERIFYPEER
включено проверяет, имеет ли запрошенный хост действительный сертификат и позволяет вернуть cURL false
если это не так. Когда CURLOPT_SSL_VERIFYPEER
выключено, недействительные сертификаты (например, самозаверяющие) принимаются и возвращают обычный ответ.
для дальнейшего использования. В новой версии SDK параметры указаны в клиенте.php следующим образом
private function getDefaultCurlOptions() {
return array (
CURLOPT_POST => true,
CURLOPT_USERAGENT => $this->config['UserAgent'],
CURLOPT_VERBOSE => true,
CURLOPT_HEADERFUNCTION => array ($this, 'headerCallback'),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2
);
}
задание
CURLOPT_SSL_VERIFYPEER => false,
сделал трюк в моем случае. Однако, поскольку я не эксперт по безопасности, никаких рекомендаций с этой точки зрения нет. По крайней мере, его работа, и вы, вероятно, не теряете 1 целый день, как я.
Я испытал очень похожую проблему с подключением к Amazon. Это были примеры файлов в комплекте с api Amazon php, которые содержат следующий массив конфигурации:
$config = array (
'ServiceURL' => $serviceUrl,
'ProxyHost' => null,
'ProxyPort' => -1,
'MaxErrorRetry' => 3,
);
и если это скопировано и не изменено
'ProxyPort' => -1,
приведет к попытке подключения через прокси-порт -1, который, конечно, не удастся (проблема отслеживается путем проверки ошибки curl). Надеюсь, это поможет.