Получение внутренней ошибки в запросах 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). Надеюсь, это поможет.