Wie lese ich die XML post von MSXML2

SwiZZ

Angesehenes Mitglied
Hallo AyomerInnen,

Ich habe ein kleines Programm mit C# geschrieben, dass einzige was das programm momentan macht ist ein MSXML Post.

CODE Private Sub btnSendHTTP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSendHTTP.Click
Dim xmlHTTP As New MSXML2.ServerXMLHTTP40
Dim odoc As New MSXML2.DOMDocument40
odoc.async = False
odoc.load("c:\test.xml")
xmlHTTP.open("POST", "http://127.0.0.1/api.php?type=nothing", False, "", "")
xmlHTTP.send(odoc)
MsgBox(xmlHTTP.responseText)

End Sub


Jetzt wenn ich durch den Proxy sehe was alles läuft, sieht so aus.


CODE POST HTTP/1.1
Accept-Language: de-ch
Content-Type: text/xml
Content-Length: 23979
Accept: */*
User-Agent: Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)
Host: 127.0.0.1:81
Connection: Close

Data found after header end:

<xml>XML DATA</xml>


Frage es handlet sich nicht um ein normales Post, so kann ich die XML mit $_POST nicht lesen, wie kann ich das machen? Ich habe unter PHP gesucht für etwa wie HTTP_RAW_DATA damit ich alles inkl. headers kann lesen aber nichts gefunden.

Weiss jemmand von euch wie ich zu die XML stream komme?

Gruss
Steven



 
Ufff gefunden...

echo $GLOBALS["HTTP_RAW_POST_DATA"]

Kennt jemmand andere Weg?
 
Hallo,

QUOTE (SwiZZ @ Di 1.11.2005, 14:19)[...] Weiss jemmand von euch wie ich zu die XML stream komme? [...]

es wäre schön, wenn Du etwas genauer beschreiben könntest, was Du genau machen möchtest.

Ich würde jetzt mal bei XML vermuten, dass dir die XML-RPC [1] Funktionen helfen könnten bzw. die Socket- [2] oder Stream-Funktionen [3].
Vielleicht aber auch die Funktion fsockopen. [4]



MfG Sascha Ahlers
 
Hallo Sascha, Ansgar,

Danke für die Tipps.

Das Problem war, dass wenn mann mit XMLHTTP ein Post auf dem Server macht, werden die XML Daten von oDoc (schau mal die code oben) nicht als normales Post gesendet wie ein Formular, sondern es werden nach die HTTP headers hinzufügt, deshalb is die stream kein POST und mann kann sie nicht mit $_POST['xml'] lesen.

Jetzt dass ich die Stream als RAW DATA habe kann ich die Daten bearbeiten mit ein Parser wie XML-RPC, aber die XML ist so unkompliziert dass ich das parsing mit RegExp gelöst habe
smile.gif


$xmlDom = $GLOBALS["HTTP_RAW_POST_DATA"];
$chars = preg_split('/<(.*?)>/', $xmlDom, -1, PREG_SPLIT_NO_EMPTY);

Gruss
Steven
 
QUOTE (SwiZZ @ Di 1.11.2005, 16:18)[...] Jetzt dass ich die Stream als RAW DATA  habe kann ich die Daten bearbeiten mit ein Parser wie XML-RPC, aber die XML ist so unkompliziert dass ich das parsing mit RegExp gelöst habe
smile.gif
[...]

Nun unter PHP 5 ist das verdammt einfach, wenn Du schon die vernüntige XML Daten hat [1], dann würde ich kein RegExp mehr benutzen.
XML-RPC ist auch nicht direkt ein Parser, sondern wie der Namen schon sagt ein RPC [2]. Ich selber empfinde die Verwendung davon als recht einfach, nur weiß ich natürlich nicht, wie dies in C# aussieht. Ich vermute jedoch, dass es dort auch nicht all zu schwer sein sollte. Nur ist Dein Code oben wirklich Visual C# geschrieben? Der Code sieht eher nach Visual Basic.Net aus.



MfG Sascha Ahlers
 
QUOTE Nur ist Dein Code oben wirklich Visual C# geschrieben? Der Code sieht eher nach Visual Basic.Net aus

smile.gif
LOL, die verwechslung war weil ich ein projekt in die solution in c# habe und die andere teil in vb.net.

Gruss
Steven

Danke für die Tipps
 
Zurück
Oben