0

これは基本的に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 要求を開始します。添付の画像で赤く囲われているそのプロセスは、customsd サービスでは発生しません。

GetSessionId 試行の Wireshark 出力

また、customsd 構成で運用サービス エンドポイントを使用して実験しましたが、その要求は同じように失敗しました。FWIW、すべての ssl_validation テストは問題なくパスし、さまざまなコンテンツ テストも同様です。

4

1 に答える 1

1

末尾のスラッシュが必要な場合...

私はついにこれを分類しました、そしてそれは信じられないほどマイナーでした。customsd 構成で、エンドポイント URL の末尾にスラッシュがありませんでした。それらを追加すると、すべてが機能しました。

実稼働サービスと実稼働エンドポイントに登録された customsd サービスの両方について、コントローラーがサーバーに対して行った呼び出しを復号化したときに、最終的にこれに気付きました。customsd サービスによる呼び出しで、ロード バランサーの 400 エラーが返されました。呼び出し間の唯一の違いはヘッダーでした。具体的には次のとおりです。

生産サービス:POST / HTTP/1.1

開発サービス:POST HTTP/1.1

LB は、呼び出しが無効であると適切に述べました。末尾のスラッシュを追加すると、すべて機能しました。

価値のあることとしては、末尾にスラッシュがない URL は、curl と SoapUI の両方で機能したと確信しています。ただし、Sonos コントローラーにはそれらが必要です。

于 2016-03-07T19:05:44.107 に答える