2016-08-29 26 views
0

私はbubbleUpnpで遊んでいて、一般的にはuPnpを見ています。私はurn:schemas-upnp-org:device:MediaRenderer:1ディスカバリーを出し、アプリはその能力を通知します。uPnp SetAVTransportURI SOAPアクションヘッダーがありません

最初の問題は、私は別のデバイス、ps3、ps4ですべてが互いに見えるが、bubbleUpnpと私のルータだけが返信する(ssdp:allになる)というxmbcがあることです。

は私がUPnPエラー

<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
     <s:Fault> 
      <faultcode>s:Client</faultcode> 
      <faultstring>UPnPError</faultstring> 
      <detail> 
       <UPnPError xmlns="urn:schemas-upnp-org:control-1-0"> 
        <errorCode>401</errorCode> 
        <errorDescription>No action by that name at this service. Missing SOAP action header.</errorDescription> 
       </UPnPError> 
      </detail> 
     </s:Fault> 
    </s:Body> 
</s:Envelope> 

を取得しかし、チャールズからヘッダをつかんでその存在を示し続けるbubbleUpnpにAVTransportURIを設定取得しようとしています。これは、SOAP/UPnPに私の中に経験することができHERESに、SOAPリクエスト

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
    <s:Body> 
     <u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"> 
      <InstanceID>0</InstanceID> 
      <CurrentURI>http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4</CurrentURI> 
      <CurrentURIMetaData /> 
     </u:SetAVTransportURI> 
    </s:Body> 
</s:Envelope> 

とチャールズの石鹸]タブの下で、それは

SetAVTransportURI Method 
Parameters Element 
[InstanceID: null] Element 0 
[CurrentURI: null] Element http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4 
[CurrentURIMetaData: null] Element 

私にはOKに見える

POST 
/dev/9bfe134f-b027-52f3-ffff-ffffaae644dd/svc/upnp-org/AVTransport/ 
action HTTP/1.1 Host 192.168.1.65:58645 Accept */* 
Accept-Encoding gzip, deflate Content-Length 429 
Content-Type text/xml; charset=utf-8 Accept-Language en-us 
soapaction urn:schemas-upnp-org:service:AVTransport:1# 
SetAVTransportURI Connection keep-alive 
User-Agent channelListingTest/1 CFNetwork/758.3.15 Darwin/15.4.0 

何もスティックを行いますでる ?

乾杯

edit heresリクエストを送信するコードです。私はこれを約束することはできません

   var request = new XMLHttpRequest(); 
       request.open("POST", "http://192.168.1.65:58645/dev/9bfe134f-b027-52f3-ffff-ffffaae644dd/svc/upnp-org/AVTransport/action"); 

       request.onreadystatechange = function() { 
         console.log(request.responseText) 
       }; 

       let setAVTransport = '<?xml version="1.0" encoding="utf-8"?>' + 
             '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' + 
               '<u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">' + 
                '<InstanceID>0</InstanceID>' + 
                 '<CurrentURI>http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4</CurrentURI>' + 
                '<CurrentURIMetaData></CurrentURIMetaData>' + 
               '</u:SetAVTransportURI>' + 
              '</s:Body>' + 
             '</s:Envelope>'; 

      request.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); 
      request.setRequestHeader("SOAPAction", "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"); 

       request.send(setAVTransport); 
+0

ヘッダに正確にペーストしてください。現在正しいかどうかはわかりません(例:石鹸の動作値が引用符で囲まれているかどうか、または1行に正しく表示されているかどうか) – jku

+0

こんにちは。 - 私はそれが何かを見ていないので、devのマシン上の私のネットワーク設定かもしれないと思う(bubbleupnpを除いて)。 – tigger

答えて

0

は本当の問題であるが、SOAPActionの値は、(私はそれがどちらかのいずれかの理にかなっているとは思わない、私に聞かないでください)二重引用符でなければなりません。一般的なIのアドバイスで

request.setRequestHeader("SOAPAction", "\"urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI\""); 

ネットワーク上の実際のメッセージを確認し(wiresharkのは素晴らしいツールです)と仕事をして、クライアントから送信されたメッセージにそれらを比較するには:

はこのような何かを試してみてください。

+0

ありがとう、私はコードが実際にうまくいかなかったと感じています - 検索リクエストでは、最後のパラメータに "\ r \ n"を追加していませんでした。これが行われたら、私はすべてのUPnPを見ることができた。投稿されたコードはkodiや他の人と協力しています(前の検索はbubblepnpのみでなければなりません)。しかし、bubblepnpはまだ大声で笑います。そのスタート! 、ありがとうございました。 そして、ええ、wiresharkは私にそのエラーを見つけるのを助けます:-) もう一度ありがとう! – tigger

+0

これは良いことです。私はkilljoyになりたくはありませんが、コードが1つの実装で動作するということは、それが問題ではありません。適切なホストにsoapメッセージを送信し、それが401で応答した場合、明らかにまだ問題があります。 – jku

関連する問題