Skicka HTTP Post till UPNP Enhet - HTTP Version Not Supp..

Utvecklar du en smartphone-app? Datorprogramvara? Få hjälp av andra och bidra med dina egna erfaranheter.
Post Reply
dhanjel
Medlem
Posts: 264
Joined: 19 Apr 2013, 12:47
10
Contact:

Jag försöker styra min förstärkare (en Sony) via UPNP anrop, jag har gjort en klient i .Net som fungerar utmärkt, så jag vet att själva anropet fungerar. Men gör jag det i Lua och i en virtuell enhet i HC2 så får jag följande fel:

Image

Någon som ser nåt fel? Har testat att skriva koden på flera olika sätt med samma resultat, så den ser kanske lite rörig ut nu.

Code: Select all

local tcpSocket = Net.FTcpSocket("192.168.1.119", 8080)
local requestBody  = "";
local requestHeader = "";

requestBody = requestBody .."<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
requestBody = requestBody .."<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">\n";
requestBody = requestBody .."<s:Body>\n";
requestBody = requestBody .."<u:GetVolume xmlns:u=\"urn:schemas-upnp-org:service:RenderingControl:1\">\n";
requestBody = requestBody .."<InstanceID>0</InstanceID>\n";
requestBody = requestBody .."<Channel>Master</Channel>\n";
requestBody = requestBody .."</u:GetVolume>\n";
requestBody = requestBody .."</s:Body>\n";
requestBody = requestBody .."</s:Envelope>\n";

requestHeader = requestHeader .."POST /RenderingControl/ctrl HTTP/1.1\n";
requestHeader = requestHeader .."SOAPACTION: \"urn:schemas-upnp-org:service:RenderingControl:1#GetVolume\"\n";
requestHeader = requestHeader .."CONTENT-TYPE: text/xml; charset=\"utf-8\"\n";
requestHeader = requestHeader .."Content-Length: " .. string.len(requestBody) .. "\n";

local request = requestHeader .. "\n" .. requestBody;
bytes, errorcode = tcpSocket:write(request);

if errorcode == 0 then
    local result =  tcpSocket:read();
  	fibaro:debug(result);
	fibaro:debug(bytes);
end 

tcpSocket:disconnect();
fibaro:sleep(1000*60);
Så här ser anrop och svar ut när det fungerar:

Code: Select all

POST /RenderingControl/ctrl HTTP/1.1
HOST: 192.168.1.119:8080
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#GetVolume"
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 380

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <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>

HTTP/1.1 200 OK
CONTENT-LENGTH: 359
CONTENT-TYPE: text/xml; charset="utf-8"
X-AV-Server-Info: av="5.0"; cn="Sony Corporation"; mn="STR-DN1040"; mv="1.00"
X-AV-Physical-Unit-Info: pa="STR-DN1040"
EXT:
SERVER: KnOS/3.2 UPnP/1.0 DMP/3.5

<?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/">
	<s:Body>
		<u:GetVolumeResponse xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
			<CurrentVolume>10</CurrentVolume>
		</u:GetVolumeResponse>
	</s:Body>
</s:Envelope>
astrandb
Ny medlem
Posts: 1
Joined: 31 Mar 2013, 17:04
10

Testa med HTTP/1.0 i headern.
dhanjel
Medlem
Posts: 264
Joined: 19 Apr 2013, 12:47
10
Contact:

Testade det, ingen skillnad. Dessutom fungerar 1.1 både via .net och via ett UPNP-program
hek
Medlem
Posts: 152
Joined: 02 Jan 2013, 16:22
11
Location: Bjärred
Contact:

Hur ser "request" ut om du skriver ut den? Ser den identisk ut mot förfrågan du gör från din dator?
dhanjel
Medlem
Posts: 264
Joined: 19 Apr 2013, 12:47
10
Contact:

Kör jag en fibaro-debug på requesten så bara låser den sig, den klarar kanske av storleken eller xml:en eller nåt liknande där.
hek
Medlem
Posts: 152
Joined: 02 Jan 2013, 16:22
11
Location: Bjärred
Contact:

XML:en ser ju inte direkt jättestor ut.
Post Reply