Hi, hier mal bisschen Code, der in meinem eigenen Tool mit meiner Fritz!Box 3070 einwandfrei funktioniert.
Ich habs mal auf das Wichtigste eingedampft, Fehlerbehandlung fürs Validieren der Inputs (Host-
URL und UPnP-Port) kannst du bestimmt selbst...
Delphi-Quellcode:
procedure TForm_Main.bbReconnectClick(Sender: TObject);
var
sock: TTcpClient;
buffer: AnsiString;
Host, Port: AnsiString;
begin
//Host-URL
Host := AnsiString(eHost.Text);
//UPnP-Port
Port := AnsiString(ePort.Text);
sock := TTcpClient.Create(self);
try
sock.RemoteHost := Host;
sock.RemotePort := Port;
sock.Open;
buffer :=
'
POST /upnp/control/WANIPConn1 HTTP/1.1' +CRLF+
'
Host: '+Host+'
:'+Port +CRLF+
'
Accept: */*' +CRLF+
'
Content-Type: text/xml; charset=utf-8' +CRLF+
'
SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination'+CRLF+
'
Content-Length: 276' +CRLF+
//Length=276 ab hier!
'
' +CRLF+
'
<?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:ForceTermination xmlns:u=''
urn:schemas-upnp-org:service:WANIPConnection:1''
/> '+
'
</s:Body> </s:Envelope>';
sock.SendBuf(buffer[1], length(buffer));
sock.Close;
finally
sock.Free;
end;
end;
PS: Meine Host-
URL ist default "fritz.box" und der UPnP-Port 49000.