Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#1

Anfrage an AVM wegen "TcpClient - Antwort XML unvollständig."

  Alt 21. Jan 2011, 17:49
Hallo,

wegen meines Problems in TcpClient - Antwort XML unvollständig. hatte ich eine Anfrage an AVM geschickt.

Zitat:
Sehr geehrte Damen und Herren,

seit kurzem besitze ich eine Fritzbox 7320 mit der Firmware 100.04.88.

Aus Interesse wollte ich mit Delphi auf die Box zugreifen. Das Lesen von
XML-Dateien funktioniert. Dann habe ich mit TIdTcpClient (Indy 10)
dieses Script versandt:


POST /upnp/control/WANIPConn1 HTTP/1.1
Host: fritz.box:49000
Accept: */*
Content-Type: text/xml
SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetStatusInfo
Content-Length: 263

<?xml version="1.0"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<u:GetStatusInfo
xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" />
</s:Body>
</s:Envelope>


Beim zeilenweisen Abruf der Antwort trat bei den letzten beiden Zeilen
ein Fehler auf. Ursache dafür war, dass diese nicht - wie erwartet - mit
einem LineFeed (#10) abgeschlossen wurden.


HTTP/1.1 200 OK
DATE: Sun, 16 Jan 2011 13:28:00 GMT
SERVER: FRITZ!Box Fon WLAN 7320 UPnP/1.0 AVM FRITZ!Box Fon WLAN 7320
(UI) 100.04.88
CONNECTION: keep-alive
CONTENT-LENGTH: 430
CONTENT-TYPE: text/xml; charset="utf-8"
EXT:

<?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:GetStatusInfoResponse
xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1">
<NewConnectionStatus>Connected</NewConnectionStatus>
<NewLastConnectionError>ERROR_NONE</NewLastConnectionError>
<NewUptime>41674</NewUptime>
</u:GetStatusInfoResponse>


Die Zeilen


</s:Body> </s:Envelope>


erhielt ich als eine erst nach einer Änderung in den Indy bzw. wenn
sofort der gesamte Buffer gelesen wird. Wenn das gesendete Script einen
Fehler enthält, tritt kein Fehler bei der Antwort auf."

Nach Ansicht sollte sich zumindest am Ende des XML ein Abschlusszeichen
(#10) befinden.

...

Mit freundlichen Grüßen

***** *****

Die Antwort sieht so aus:

Zitat:
Sehr geehrter Herr *****,

vielen Dank für Ihre Anfrage.
Nach Sichtung Ihrer Informationen könnten wir Ihnen mitteilen, dass die UPnP-Schnittstelle der FRITZ!Box RFC-konform implementiert ist und keine Änderung durch AVM erfolgen wird.

Die Kollegen haben noch einen ergänzenden Hinweis gegeben:
"Der Kunde geht davon aus, dass die UPnP Antwort zeilenweise geschickt wird (Zeileninhalt + Zeilenumbruch). Das ist eine falsche Annahme; er müsste das Header-Feld Content-Length auswerten (hier 430). Danach kann er prüfen ob der Inhalt, beginnend mit <?xml insgesamt die Länge von der angegebenen Content-Length erreicht."

Wir hoffen, dass sich Ihre Fragestellung damit geklärt hat und wünschen Ihnen für Ihr Projekt viel Erfolg.

Mit freundlichen Grüßen
******* *****
Produktmanagement

...

Wenn diese Aussage richtig wäre, wäre TIdTcpClient fehlerhaft...
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat