8

我已经下载了 Amazon 的 Marketplace SDK,并且正在尝试示例目录中的一个示例。但是,每当我尝试时,我都会收到以下详细信息的异常:

Caught Exception: Internal Error
Response Status Code: 0
Error Code: 
Error Type: 
Request ID: 
XML: RequestId: , ResponseContext: , Timestamp: 
ResponseHeaderMetadata: 

我也使用 SSL 启用了 CURL。我究竟做错了什么?

4

3 回答 3

16

此答案供将来参考。有关深入的故障排除,请参阅对该问题的评论。

空响应表示与 Amazon 服务器的连接失败。在这种情况下,HTTP 工作正常,但 HTTPS 没有。由于关闭CURLOPT_SSL_VERIFYPEERcURL 设置解决了该问题,亚马逊服务器似乎没有使用有效的 SSL 证书。

CURLOPT_SSL_VERIFYPEER打开检查请求的主机是否具有有效证书,如果没有则让 cURL返回false。关闭时CURLOPT_SSL_VERIFYPEER,接受无效证书(例如,自签名)并返回常规响应。

于 2013-01-13T14:37:54.850 回答
2

备查。在新版本的 SDK 中,client.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,

在我的情况下成功了。但是,由于我不是安全专家,因此从这个角度没有建议。至少它的工作,你可能不会像我一样失去一整天。

于 2017-04-30T11:45:02.823 回答
1

我遇到了与亚马逊非常相似的连接问题。它是与 Amazon php api 捆绑在一起的示例文件,其中包含以下配置数组:

$config = array (
  'ServiceURL' => $serviceUrl,
  'ProxyHost' => null,
  'ProxyPort' => -1,
  'MaxErrorRetry' => 3,
);

如果这被复制而不被修改

'ProxyPort' => -1,

将导致尝试通过代理端口 -1 进行连接,这当然会失败(通过检查 curl 错误跟踪问题)。我希望这有帮助。

于 2013-11-27T16:32:45.880 回答