2016-08-29 3 views
0

나는 bubbleUpnp를 가지고 놀고 있으며 일반적으로 uPnp를보고 있습니다. 나는 urn : schemas-upnp-org : device : MediaRenderer : 1 검색을 실행하고 앱이 그 기능을 알린다.uPnp SetAVTransportURI 누락 된 SOAP 동작 헤더

첫 번째 문제는 xmbc가 다른 장치 인 ps3, ps4 모두가 서로를 볼 수 있지만 bubbleUpnp와 라우터 만 응답한다는 것입니다 (ssdp : all).

내가 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을 설정려고.

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 

내 비누 경험/UPnP를 아무것도 스틱을하지
<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 

에 좋아 보이는

을 heres 비누 요청 나가?

건배

편집 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

머리글을 정확하게 붙여 넣으십시오. 올바른지 여부는 현재 알 수 없습니다 (예 : 비누 동작 값이 인용되어 있지 않거나 한 줄로 정확하게 표시되어 있음). – jku

+0

안녕하세요, 감사합니다. - 나는 kodi가 아무것도 볼 수 없으므로 dev 컴퓨터에서 내 네트워크 설정 일 수 있다고 생각합니다 (bubbleupnp 제외). – tigger

답변

0

나는 이것이 진짜 문제 만이 SOAPAction 값이 (저를 요구하지 않습니다, 나는 그것이 하나 어떤 의미가 있다고 생각하지 않습니다) 쌍 따옴표에 있어야입니다 약속 할 수 있습니다. 이 같은

시도 뭔가 :

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

일반 I 조언에서 네트워크에 실제 메시지를 확인 (Wireshark는 훌륭한 도구입니다) 작업을 수행하는 클라이언트가 보낸 메시지를 비교합니다.

+0

감사합니다. 코드가 실제로 괜찮 았던 것 같아요. 검색 요청에서 마지막 매개 변수에 "\ r \ n"을 추가하지 않았습니다. 이것이 끝나면 나는 모든 업 그레 이드를 볼 수 있었다. 게시 된 코드는 kodi 및 다른 사람들과 함께 작동합니다 (검색 전에는 bubblepnp 만 사용해야 함). 그러나 bubblepnp는 여전히 신음합니다. 그 시작! , 시간을내어 주셔서 감사합니다 :-). 그리고 예, wireshark는 오류를 찾을 수 있도록 도와줍니다 :-) 다시 한번 감사드립니다! – tigger

+0

듣기 좋습니다. 필자는 killjoy가되고 싶지 않지만 코드가 하나의 구현에서 작동한다고해서 그것이 괜찮다는 것을 의미하지는 않습니다. 정확한 호스트에 비누 메시지를 보내고 401으로 응답했다면 분명히 여전히 문제가 있습니다. – jku