Discussion:
Fehler in ActiveX MSXML 2.6, 3.0, 4.0?
(zu alt für eine Antwort)
Peter Schmid
2005-08-29 08:42:18 UTC
Permalink
Hallo XML-Gemeinschaft

Bin ein XML-Neuling und habe ein merkwürdiges Verhalten im Zusammenhang mit
MSXML.

Ich habe die Aufgabe aus einer Access-Datenbank Daten an einen
Internet-Server zu übertragen. Die zu übertragende Datei ist im XML-Format.
Alle Access-Tabellen sind ganz "normal" in einer Access-MDB gespeichert ohne
Verwendung von XML. Über ein ActiveX (Microsoft XML, v2.6 -> msxml2.dll bzw.
Microsoft XML, v3.0 -> msxml3.dll, bzw. Microsoft XML, v4.0 -> msxml4.dll)
lässt sich ein DOMDocument-Objekt bzw. ein XMLHTTP-Objekt erstellen.
Dieses Objekt sende ich über die Befehle :

xml_http.Open "POST", xml_string, false
xml_http.Send

an einen Oracle-Listener, der auf dem Webserver läuft. Der String, der die
Adresse des Servers, sowie die zu übertragenden Daten enthält kann mehrere
tausend Zeichen lang werden. Bei wenig Daten in der XML-Datei (bis zu 2087
Zeichen) läuft das Programm einwandfrei ab und der Webserver bestätigt durch
eine Meldung, die in xml_http.responseText zurückgegeben wird, dass die
Daten angekommen sind. Werden mehr als 2087 Zeichen gesendet, so meldet
Access bzw. das ActiveX während dem Aufruf des ActiveX einen Fehler mit der
Nummer -2146697211 (Die angegebene Ressource konnte nicht gefunden werden).
- Ist jemandem bekannt, ob der String, der gesendet wird, auf diese Länge
beschränkt ist?
- Gibt es eine Möglichkeit dieses Problem zu umgehen

Sollte das Problem nicht in diese Newsgroup gehören oder nicht verständliche
beschrieben sein, bitte melden!

Um Informationen und Ideen bin ich sehr dankbar
Es grüsst
Peter Schmid
Bjoern Hoehrmann
2005-08-29 08:52:56 UTC
Permalink
Post by Peter Schmid
xml_http.Open "POST", xml_string, false
xml_http.Send
an einen Oracle-Listener, der auf dem Webserver läuft. Der String, der die
Adresse des Servers, sowie die zu übertragenden Daten enthält kann mehrere
tausend Zeichen lang werden. Bei wenig Daten in der XML-Datei (bis zu 2087
Zeichen) läuft das Programm einwandfrei ab und der Webserver bestätigt durch
eine Meldung, die in xml_http.responseText zurückgegeben wird, dass die
Daten angekommen sind.
Klingt nach <http://support.microsoft.com/kb/208427>, wobei ich davon
ausgehe dass der xml_string oben tatsächlich die zu öffnende URL ist,
und nicht die Daten die im POST-Körper gesendet werden sollen. Da
hilft wohl nur Daten anders zu verschicken.
--
Björn Höhrmann · mailto:***@hoehrmann.de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/
Martin Honnen
2005-08-29 12:09:53 UTC
Permalink
Post by Peter Schmid
xml_http.Open "POST", xml_string, false
xml_http.Send
Wenn du HTTP POST verwenden willst, dann solltest du fuer die
Open-Methode nur die URL als Argument nehmen also
xml_http.Open "POST", "http://example.com/2005/whatever.asp", false
und dann die (reinen XML) Daten als Argument der send-Methode versenden:
xml_http.send xml_string
So werden die XML-Daten im Rumpf der HTTP POST-Anfrage versendet und da
gibt es dann keine Laengenbeschraenkung.
Natuerlich muss der Server (also z.b. whatever.asp oben) dann den Rumpf
der Anfrage auslesen, aber das ist in den ueblichen server-seitigen
Frameworks (ASP, PHP, JSP usw.) kein Problem.
--
Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/
Loading...