海关服务没有点击服务器GetSessionId调用

时间:2016-02-28 17:40:27

标签: sonos

这基本上是Can not add account for custom Sonos service的副本,但是没有接受的答案,我无法添加评论来询问他们是否解决了他们的问题。

我已经继承了一个项目,并且正在尝试添加开发服务。我已经通过/customsd.htm对其进行了配置,将标头策略设置为会话ID,使安全和不安全的端点都能正常工作。

当我去添加频道时,我看到了strings.xml的请求。但是,我从来没有看到任何getSessionId请求。同时,SONOS报告"未找到帐户。 *****服务器无法识别您的登录信息。"我能够使用SoapUI发出请求,并得到有效的响应。

如果值得一提,我在SONOS'测试版程序,版本6.2,版本31926010(Mac桌面应用程序)。

更新:

虽然我不确定这里有什么有用的东西,查看[deviceIP]:1400/support/aggregate的日志,但我看到以下内容。请注意,编辑的URL和IP确实解决了。 IP用于负载均衡器,URL在其后面。

Feb 28 11:07:42 Sonos[84168] <![CDATA[<]]>Error<![CDATA[>]]>: (SCLib) dns(1): [redacted URL] -<![CDATA[>]]> [redacted IP]
Feb 28 11:07:42 Sonos[84168] <![CDATA[<]]>Error<![CDATA[>]]>: (SCLib) control_client(1): getSessionId failed, res = 1000, tvStart = 1456679262 s 250163 us, m_tvConnectDone = 1456679282 s 250162 us, m_tvDone = 1456679302 s 250162 us, tvNow = 1456679262 s 509982 us
Feb 28 11:07:42 Sonos[84168] <![CDATA[<]]>Error<![CDATA[>]]>: (SCLib) soap(1):  - param username = [redacted username]

更新#2:

我通过Wireshark检查了数据包,生产服务和开发的行为似乎相同,只是对于生产服务,控制器/我的计算机在服务器挂起之前启动对Sonos的POST请求。附件中以红色标出的过程不适用于海关服务。

Wireshark output of GetSessionId attempt

我还尝试在海关配置中使用生产服务端点,但该请求以相同方式失败。 FWIW,所有ssl_validation测试都通过了,各种内容测试也是如此。

1 个答案:

答案 0 :(得分:1)

因为缺少尾随斜线......

我终于对此进行了整理,这非常轻微。在海关配置中,我的端点网址没有尾部斜杠。添加它们就可以了。

当我解密控制器为服务器为生产服务和注册到生产端点的海关服务所做的调用时,我终于意识到了这一点。海关服务部门的调用是收回负载均衡器的400错误。调用之间的唯一区别是标题,特别是:

制作服务:POST / HTTP/1.1

开发服务:POST HTTP/1.1

LB正确地说这个电话无效。添加尾部斜杠使其全部工作。

对于它的价值,我非常确定没有尾随斜杠的URL既可以通过curl工作,也可以通过SoapUI工作。但是,Sonos控制器需要它们。