XML-Code per POST wegschicken
severus
- php
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
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 documentWie 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