![]() |
Problem mit HTTP-Server und XML-Parsing
Hi Leute, ich möchte per HTTP-Post-Request Daten an einen Server schicken , welcher diese dann interpretiert. Die Daten werden im XML-Format übertragen.
Hierzu habe ich die INDY-HTTP-Server - Komponente auf meinem Formular plaziert. Ankommende daten werden wie folgt verarbeitet bei der HTTP-Server -Komponente:
Delphi-Quellcode:
Mit der Funktion Log schreibe ich in ein Memofeld und sehe, dass in str_datastring mein XML-String einwandfrei ankommt.
procedure Tfrm_main.http_serverCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); var str_datastring:string; begin //Das XML - Glied herausfinden str_datastring := streamtostring(arequestinfo.PostStream); str_datastring := copy(str_datastring,pos('<xml',str_datastring),pos('</xml>',str_datastring)+length('</xml>')-pos('<xml',str_datastring)); //Logging log('Receiving data from ' + ARequestInfo.Host + ': ' + str_datastring); AResponseInfo.ContentText := parse_xml(str_datastring); AResponseInfo.WriteContent; log('ende'); end; Lasse ich genau diesen XML-String manuell durch parse_xml() interpretieren läuft das ganze auch einwandfrei. Wenn ich jedoch direkt in der Prozedur parse_xml() mit dem sonst einwandfrei interpretierten XML-String aufrufe entsteht ein Fehler bzw. das Programm stockt. Der Fehler tritt auch auf, wenn ich z.B. nicht prase_xml(str_datastring) verwende, sondern ein ganz simples parse_xml('<xml><test>ladsfl</test></xml>'), welches ja bei der interpretierung keinerlei Zicken machen dürfte, bzw. bei der manuellen interpretation auch einwandfrei durchläuft. Zunächst einmal meine Funktion parse_xml():
Delphi-Quellcode:
Wie man sieht is die Funktion noch recht simpel, es tritt hier jedoch bereits bei xml.Active := true ein fehler auf, jecoch nur(!!!) wenn die Funktion parse_xml() in der oben geposteten Methode aufgerufen wird, sonst läuft sie Einwandfrei durch (bei genau gleichem xml-code)
function parse_xml(xmlstring_f:string):string;
var xml:IXMLDocument; node: IXMLNode; begin xml := TXMLDocument.Create(nil); log('Parsing:Starting'); xml.XML.Text := xmlstring_f; //bis hier läuft die Funktion xml.Active := True; //Alles zwischen <xml und </xml> zuweisen node := xml.DocumentElement; log('Parsing:Finished'); end; Leute ich weiß einfach nicht mehr weiter, helft mir bitte! |
Re: Problem mit HTTP-Server und XML-Parsing
Wie so oft: Welche Fehlermeldung kommt? Du weist schon: Glaskugel defekt und so. Ich tipp trotzdem mal: "CoInitialize nicht aufgerufen" :-)
|
Re: Problem mit HTTP-Server und XML-Parsing
Jetzt wo ich die Exceptions ausgebel lasse kommt genau diese Fehlermeldung .
und nu ? |
Re: Problem mit HTTP-Server und XML-Parsing
"CoInitialize" aufrufen?
|
Re: Problem mit HTTP-Server und XML-Parsing
und was ist das denn und wo sollte ich es am besten aufrufen ?
|
Re: Problem mit HTTP-Server und XML-Parsing
Zitat:
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz