0

UPnPでsoapを使用してイベントを呼び出そうとしています。ネットワークからこのコマンドをスニッフィングしました。これを再現したいのですが、どこから始めればよいのか+どの「framework/lib」を使用すべきかわかりません。

これをJavaで実行するための提案はありますか?

再現する必要があるこのコード:

POST /_urn-upnp-org-serviceId-SwitchPower.0001_control HTTP/1.1
SOAPACTION: "urn:schemas-upnp-org:service:SwitchPower:1#SetTarget"
CONTENT-TYPE: text/xml; charset="utf-8"
HOST: 192.168.1.18:1451
Content-Length: 347

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"      xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
  <u:SetTarget xmlns:u="urn:schemas-upnp-org:service:SwitchPower:1">
     <newTargetValue>0</newTargetValue>
  </u:SetTarget>
</s:Body>
</s:Envelope>HTTP/1.1 200 OK
EXT: 
CONTENT-TYPE: text/xml; charset="utf-8"
SERVER: Windows NT/5.0, UPnP/1.0
Content-Length: 290

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"     xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <u:SetTargetResponse xmlns:u="urn:schemas-upnp-org:service:SwitchPower:1" />
  </s:Body>
</s:Envelope>
4

1 に答える 1

0

具体的には、このリクエストはDimmableLight DCPの呼び出しです。これは、すでにここで回答したためです。

UPnP:intel:スタックの生成:java android:ネットワークライトサンプルでのアクションの呼び出し

はい、SOAPです。いくつかの一般的なSOAPツールセットを使用してそれを再現することは絶対に可能ですが、どこにも到達しません。実際にリクエストを送信するには、DimmableLightデバイスがDCPを公開しているソケットを知る必要があります。つまり、コントロールポイント(退屈に再現しようとしている要求の発信元)は、UPnPネットワークからのNOTIFYパケットをリッスンする必要があります。SOAPはそれを助けません。

ランダムにスニッフィングされたパケットの再生に進む前に、@ simoncが言及しているドキュメントバンドルからUPnP-arch-DeviceArchitectureを読んで、UPnPがどのように機能するかを理解することをお勧めします。次に、既製のライブラリの1つを使用します。Javaについて話すことはできませんが、C++Platinumには理解しやすい例がロードされています。UPnPは、既知の広く普及しているテクノロジーの十分に文書化された融合です。

于 2012-05-29T12:55:54.293 に答える