
Я пытаюсь использовать UPNP на своем маршрутизаторе, но он продолжает выдавать ошибку 501.
команда, которую я использую
curl "192.168.1.1:52869/control/igd/devinfo" --header "SOAPAction: urn:dslforum-org:service:DeviceInfo:1#GetInfo" -vv -d @1.xml -H "Content-Type: text/xml;charset=utf-8"
the deviceinfo.xmlчто я получил информацию от ... иИГД.xmlчто я получил SOAPAction из ... именно этой части
<serviceList>
<service>
<serviceType>urn:dslforum-org:service:DeviceInfo:1</serviceType>
<serviceId>DeviceInfo</serviceId>
<controlURL>/control/igd/devinfo</controlURL>
<eventSubURL>/event/igd/devinfo</eventSubURL>
<SCPDURL>/DeviceInfo.xml</SCPDURL>
по какой-то неизвестной причине единственные работающие запросы - это те же самые запросы из этого инструмента
хотя IGD.xml предоставляет массу опций... переадресация портов и некоторые опции wan - единственные, доступные в этом инструменте
команда, которая работает
curl "192.168.1.1:52869/upnp/control/WANIPConn1" --header "SOAPAction: urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -vv -d @1.xml -H "Content-Type: text/xml;charset=utf-8"
Файл 1.xml выглядит следующим образом: в основном это смесь действия Soap и обычного XML-запроса Soap.
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetExternalIPAddress xmlns:u=”urn:schemas-upnp-org:service:WANIPConnection:1″></u:GetExternalIPAddress></s:Body></s:Envelope>
Я даже не знал, откуда инструмент взял этот URL, который полностью отличается от URL-адресов в файле igd.xml, поэтому я поискал строки в файлах прошивки устройства и нашел файл с именемgatedesc.sklтолько с двумя вариантами, которые есть на изображении... как это и в чем проблема?
решение1
У вас в схеме есть умные кавычки 1.xml
, исправьте их в первую очередь (если только это не просто от вставки сюда).
решение2
в дополнение к тому, что сказал @gaddman (спасибо, приятель)... вот некоторая информация, которая наверняка поможет любому, кто столкнется с этой проблемой.
если вы делаете это вручную, то в основном запрос выполняется следующим образом (я использую curl для этой работы)
завиток "(здесь вы вводите IP-адрес устройства и порт UPNP + URL-адрес управления нужной вам конфигурации, которую вы обязательно найдете с помощью таких инструментов, какminiupnpc-2.1)" тогда этот заголовок--header "Действие SOAP:(и длинная часть, которую вы найдете в верхней части URL-адреса действия, как на этом изображении) + # (нужное вам действие), затем-вв -д@файл, в который вы помещаете информацию о нужном вам действии.xml, затем этот статический заголовок -H "Content-Type: text/xml;charset=utf-8"
так что в основном команда выглядит так
curl "192.168.1.1:52869/control/igd/wlanc_1_1" --header "SOAPAction: urn:dslforum-org:service:WLANConfiguration:1#GetInfo" -vv -d @2.xml -H "Content-Type: text/xml;charset=utf-8"
URL-адреса можно получить, введя listdevices.exe в командной строке в папке miniupnpc-2.1. XML-файл в основном статичен, а динамическая часть состоит из заголовка действия Soap, например, такого:
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetInfo xmlns:u="urn:dslforum-org:service:WLANConfiguration:1"></u:GetInfo></s:Body></s:Envelope>
Я действительно рекомендую использовать графический инструмент, если вы не имеете об этом ни малейшего представления, например Тестер UPnPдля окон илиИнструмент UPnPкоторый я действительно предпочитаю другим, потому что он обновляется и работает лучше.
извините за неясное объяснение, я все еще новичок в этом.