4

私は HTTP リクエストの初心者ですが、 Sony の APIを使用して Wi-Fi カメラを制御する Python アプリを作成したいと考えています。今のところ、カメラと会話しようとしているだけですが、get リクエストが失敗し続けています。私はすべてのドキュメント (UPnP ドキュメント、SSDP ドキュメント、ユーザーズ マニュアルなど) を持っていますが、本当に基本的なものが欠けていると思います。ソニーのドキュメントによると、次のことが必要です。

  1. カメラにアクセス ポイントとして接続します (つまり、他の Wi-Fi ルーターと同じようにログインします)。
  2. 特定の URL とポートにリクエストを送信する

ここで何がうまくいかないのか、誰にも分かりますか?UPnP / SSDP の使用を開始するための適切なリソースはありますか? ここから DISCOVERY_MSG 文字列のフォーマットを取得しました。

#!/usr/bin/python

def main():
    import requests

    DISCOVERY_MSG = ('M-SEARCH * HTTP/1.1\r\n' +
                 'HOST: 239.255.255.250:1900\r\n' +
                 'MAN: "ssdp:discover"\r\n' +
                 'MX: 3\r\n' +
                 'ST: urn:schemas-sony-com:service:ScalarWebAPI:1\r\n' +
                 'USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1\r\n\r\n')

    try:
        r = requests.get(DISCOVERY_MSG)
    except:
        print('Didn\'t work')


if __name__ == '__main__':
  main()
4

2 に答える 2

3

これは UPnP とはほとんど関係がないと思います。Sony はたまたま発見のために SSDP を使用しており、事実上の SSDP 仕様はたまたま UPnP アーキテクチャ ドキュメントに含まれています。

問題についてrequests.get()は、UDP マルチキャスト メッセージを送信し、代わりに応答を処理する必要がある場合に、通常の HTTP GET を実行します (または、正しい引数を指定した場合)。

本当にこれを自分で行うつもりなら、ネットワーキングについて少し学び、SSDP プロトコルを理解する準備をしてください ( UPNP UDA パート 1を参照してください)。しかし、私の提案は、SSDP ライブラリを使用するか、動作するオープン ソース コードをコピーすることです。そうすれば、実際に新しいもの (sony プロトコルの実装など) を提供することに集中できます。

于 2013-10-01T14:37:54.097 に答える