severus: XML-Code per POST wegschicken

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

Den Inhalt von $data will ich per Post an $host schicken:
$fp = fsockopen($host,80, &$errno, &$errstr);
fputs($fp, "POST $path HTTP/1.1\n");
fputs($fp, "Host: $host\n");
fputs($fp, "Referer: $referer\n");
fputs($fp, "Content-length: ".strlen($data_to_send)."\n");
fputs($fp, "Content-type: text/xml  encoding="UTF-8"; \n\n");
...

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

Wie muß ich den Header aufbereiten?

THX

  1. 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