Christian Kruse: XML-Code per POST wegschicken

Beitrag lesen

Hallo severus,

$data = '<?xml version = "1.0" encoding="UTF-8"?>\n
<ROWSET>
<ROW num="1">
<CB_TEXT2>Text CB</CB_TEXT2>
</ROW>
</ROWSET>
';

Hier wird '\n' nicht umgesetzt, das ist dir hoffentlich klar?

$fp = fsockopen($host,80, &$errno, &$errstr);
fputs($fp, "POST $path HTTP/1.1\n");

Statt "\n" solltest du "\015\012" verwenden. Ein HTTP-Server
(oder Client) ist zwar *angehalten* (should), Requests mit
"\012" als Zeilenende zu verstehen, aber er *muss* nicht.
Und auf einem Mac waere es dann wieder komplett falsch, da
wuerde nur "\015" uebermittelt werden.

fputs($fp, "Content-length: ".strlen($data_to_send)."\n");

Wo kommt $data_to_send her? Ich hoffe, $data_to_send ist das
Ergebnis von urlencode($data)? In dem Fall waere es richtig.

fputs($fp, "Content-type: text/xml  encoding="UTF-8"; \n\n");

Das ist falsch. Das muss

fputs($fp,"Content-Type: text/xml; charset=utf-8\015\012\015\012");

heissen.

Ich gekomme immer folgende Fehlermeldung:
You did not post an XML document

Wie muß ich den Header aufbereiten?

Der Header scheint in Ordnung zu sein. Aber wo uebermittelst
du die Daten? Du musst schon noch die Daten hinter den
POST-Header haengen:

fputs($fp,$data_to_send."\015\012");

Gruesse,
 CK