2016-08-29 4 views
0

Я играю с bubbleUpnp и смотрю на uPnp в целом. Я выпустил урну: schemas-upnp-org: device: MediaRenderer: 1 обнаружение, и приложение уведомляет о его возможностях.uPnp SetAVTransportURI Отсутствует заголовок действия SOAP

Первая проблема заключается в том, что у меня есть xmbc на разных устройствах, ps3, ps4 все могут видеть друг друга, но только bubbleUpnp и мой маршрутизатор отвечают (что касается ssdp: all to).

пытается получить установить AVTransportURI на bubbleUpnp я получаю ошибку 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> 

Но захватывая заголовок из Чарльза показывает его там.

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 

Heres запрос мыла

<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 

Это может быть мой опыт с мылом/UPnP делает что-нибудь палку вне ?

Приветствия

редактировать 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

Привет, спасибо, - Я думаю, что это могут быть мои сетевые настройки на dev-машине, поскольку kodi ничего не видит от него (за исключением снова для bubbleupnp). – tigger

ответ

0

Я не могу обещать, что это реальная проблема, но значение SOAPAction должно быть в doublequotes (не спрашивайте меня, я не думаю, что это имеет смысл либо).

попробовать что-то вроде этого:

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

В общих рекомендаций I, чтобы проверить фактические сообщения в сети (Wireshark является отличным инструментом) и сравнить их сообщения, отправленные клиентом, который делает работу.

+0

Спасибо, я чувствую себя глупым, что код был на самом деле прекрасен - в запросе на поиск я не добавлял «\ r \ n» в последнем параметре. Как только это было сделано, я мог видеть каждый всплеск. Введенный код работает с kodi и другими теперь (поиск раньше должен был только bubblepnp), но bubblepnp все еще стонет LOL. Это начало! , спасибо за время :-). И да, wirehark поможет мне найти эту ошибку :-) еще раз спасибо! – tigger

+0

Это приятно слышать. Я не хочу быть killjoy, но тот факт, что код работает с одной реализацией, не означает, что это нормально. Если вы отправили сообщение с мылом на правильный хост, и оно ответило на 401, очевидно, что все еще есть проблема. – jku

 Смежные вопросы

  • Нет связанных вопросов^_^