Sonos cancelAudioClip API 返回 415 HTTP 响应

Posted

技术标签:

【中文标题】Sonos cancelAudioClip API 返回 415 HTTP 响应【英文标题】:Sonos cancelAudioClip API returns 415 HTTP response 【发布时间】:2021-07-19 21:15:07 【问题描述】:

我可以播放音频剪辑,但是当我尝试使用记录的 API 取消剪辑时,我收到 415 不支持的媒体类型错误,并带有以下错误文本:

RESTEASY003065:无法使用内容类型

令人困惑的部分是请求是一个 HTTP DELETE 动词,我没有提供附加的正文/内容,因为 API 没有要求 (https://developer.sonos.com/reference/control-api/audioclip/cancelaudioclip/)。

请注意 SONOS 文档中描述为“/players/playerId/audioClip/id”的 API 与页面底部包含路径中的家庭的示例之间存在不一致。

以下是我发送的 API 示例: https://api.ws.sonos.com/control/api/v1/players//audioClip/

有什么技巧可以让它发挥作用吗?这是 SONOS 实现中的错误吗?

【问题讨论】:

【参考方案1】:

2021 年 8 月 2 日编辑:我已在内部检查过,此 API 无法通过云使用,只能通过 LAN 使用。我会要求将此页面从 Cloud Control API 文档中删除。

您看到的第一个错误 (RESTEASY) 是由于未在请求中明确设置 Content-Type 标头引起的 - 即使在没有正文/内容的请求上也是如此。 header的值应该是application/json,像这样:

内容类型:application/json

添加 Content-Type 标头后,会出现以下错误:

"errorCode":"ERROR_UNSUPPORTED_COMMAND","reason":"Command not found"

这是预期的,因为此 API 无法通过 Cloud Control API 使用。我在内部询问过何时通过云启用此功能,但没有添加它的计划或时间表。

【讨论】:

感谢您的回复。我向 DELETE API 添加了一个空的 JSON 正文。我尝试了两种 API 形式,并且 get command not found 两种 API 的错误:家庭 API:DELETE api.ws.sonos.com/control/api/v1/households/<MY HOUS ID>/players//audioClip/ 返回:404 - "errorCode": "ERROR_UNSUPPORTED_COMMAND","re​​ason":"Command not found" 仅设备 API:DELETE api.ws.sonos.com/control/api/v1/players/<My Player ID>/audioClip/ 返回:404 - "errorCode":"ERROR_UNSUPPORTED_COMMAND","re​​ason": “找不到命令” 嗨@gambitx28 - 我已经更新了我的原始答案并进行了一些澄清。总结是第一个错误 (RESTEASY) 是由于缺少 Content-Type 标头,第二个错误 (ERROR_UNSUPPORTED_COMMAND) 是因为此 API 在 Cloud Control API 中不可用,并且未知何时添加。我会要求将其从文档中删除。 您是说无法停止已开始播放的音频剪辑吗?即剪辑可以开始,但不能停止,对吗? @gambitx28 - 这是正确的,并且没有关于何时通过 Cloud Control API 提供该功能的预计时间。如果您对使用能够取消音频剪辑的 LAN 控制 API 感兴趣,可以联系 developer-feedback@sonos.com。

以上是关于Sonos cancelAudioClip API 返回 415 HTTP 响应的主要内容,如果未能解决你的问题,请参考以下文章

通过 API 启用 Sonos 麦克风

Sonos API 订阅回调已停止

一个 Sonos 音乐 API (SMAPI) 实现,在测试期间服务无法播放音乐与服务的连接丢失

如何使用c#和sonos api获取注册到帐户的家庭列表?

如何从 Sonos 中删除音频剪辑

Sonos 客户端证书