【问题标题】:Alexa SMAPI - export skill package - 405 Method not allowedAlexa SMAPI - 导出技能包 - 405 Method not allowed
【发布时间】:2019-05-08 13:02:21
【问题描述】:

根据以下文档:Create an export request for an existing skill

POST /v1/skills/{skillId}/stages/{stage}/exports

但文档没有说明 POST 请求 body 应该是什么,所以我尝试不发送正文,并尝试发送空 JSON 对象。结果相同。

我正在使用 cURL 和 PHP 向完整的 url 发送 POST 请求:

$url = "https://api.amazonalexa.com/v1/skills/$skillId/stages/$stage/exports";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: '.$access_token));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTP_VERSION, 'CURLOPT_HTTP_VERSION_NONE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode(array()));

//enable and get headers, this API response has no body, only headers
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
$result = curl_exec($ch);
curl_close($ch);

但我收到此错误响应状态:

HTTP/1.1 405 方法不允许


我知道skillIdstage 变量是正确的,因为我能够以类似的方式向其他API 方法发送POST 请求而不会出错。 (ei.Update Skill Manifest)

我已尝试仔细检查通过 Amazon Login 设置的所有权限,并且我正在使用文档中显示的所有权限:

alexa::ask:skills:read alexa::ask:skills:readwrite alexa::ask:models:read alexa::ask:models:readwrite alexa::ask:skills:test

为什么还是返回 405 错误?

【问题讨论】:

  • 使用CURLOPT_NOBODY将请求方法更改为HEAD而不是POST,因此请尝试删除该行。
  • @ChrisWhite 是的!就是这样,然后它抱怨接收到一个不期望的列表的开头,所以我还需要删除带有空数组的CURLOPT_POSTFIELDS

标签: php amazon-web-services alexa


【解决方案1】:

使用 CURLOPT_NOBODY 将请求方法更改为 HEAD 而不是 POST,因此请尝试删除该行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2017-06-07
    • 2014-08-31
    • 2011-09-25
    • 2015-07-29
    相关资源
    最近更新 更多