Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Anfrage an AVM wegen "TcpClient - Antwort XML unvollständig." (https://www.delphipraxis.net/157707-anfrage-avm-wegen-tcpclient-antwort-xml-unvollstaendig.html)

Garfield 21. Jan 2011 16:49

Anfrage an AVM wegen "TcpClient - Antwort XML unvollständig."
 
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... :?

shmia 21. Jan 2011 17:32

AW: Anfrage an AVM wegen "TcpClient - Antwort XML unvollständig."
 
Also die Aussage von AVM ist richtig.
Das Feld CONTENT-LENGTH: im HTTP-Header ist maßgebend für die Länge der Nutzdaten.

Zitat:

Wenn diese Aussage richtig wäre, wäre TIdTcpClient fehlerhaft...
Meinst du wirklich TIdTcpClient?
Diese Komponente ist ja unabhängig von den übertragenen Daten.
Oder meinst du in Wirklichkeit TIdHttpClient?

Garfield 21. Jan 2011 18:33

AW: Anfrage an AVM wegen "TcpClient - Antwort XML unvollständig."
 
TIdTcpClient ist richtig. TIdHTTP ging nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz