Tabris JS извлекает api для обработки предполётных запросов
У меня есть сервер UPNP MPD, работающий на Raspberry Pi, подключенный к моей домашней сети.
Я пытаюсь контролировать это через приложение Tabris.
fetch('http://192.168.1.6:49152/ctl/RenderingControl', {
method: 'POST',
headers: {
"SOAPAction": "urn:schemas-upnp-org:service:RenderingControl:1#GetVolume",
"Content-Type": "text/xml; charset=utf-8"
},
body: '<?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:GetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"><InstanceID>0</InstanceID><Channel>Master</Channel></u:GetVolume></s:Body></s:Envelope>'
}).then(function (response) {
console.log(response.text());
}).catch(function (error) {
console.log('Request failed', error);
});
Этот код возвращает 400 bad request
ошибка. Тем не менее, выполнение запроса curl работает
echo '
<?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:GetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
<InstanceID>0</InstanceID>
<Channel>Master</Channel>
</u:GetVolume>
</s:Body>
</s:Envelope>
' | curl -v -d @- \
-H 'SOAPAction: "urn:schemas-upnp-org:service:RenderingControl:1#GetVolume"' \
-H 'content-type: text/xml; charset="utf-8"' \
http://192.168.1.6:49152/ctl/RenderingControl
Я думаю, что это проблема с предварительными запросами, но я не уверен, как это исправить.
Как именно можно обрабатывать такие запросы API? Где в коде проблема?