Home > php, soap > Ein paar SOAP Notizen

Ein paar SOAP Notizen

January 22nd, 2009

Oftmals ist es so dass ein SOAP Client die Daten nicht in einem der üblichen Request Parameter sendet. Wie z.b. $_POST, $_GET oder als Fileupload, sondern in einer reichlich schlecht dokumentierten Variable namens $GLOBALS['HTTP_RAW_POST_DATA'] oder $HTTP_RAW_POST_DATA.

Der richtige Content Type für die Antwort eines SOAP Servers ist application/soap+xml also

header('Content-Type: application/soap+xml;charset=utf-8');

Beim senden der Antwort sollte darauf geachtet werden alle Zeilenumbrüche und Tabs zu entfernen. Auch alle Quotes im Antworttext sollten transformiert werden.

$message = str_replace("<", "<", $message);
$message = str_replace(">", ">", $message);
$message = str_replace("\"", """, $message);

$message enthält in diesem eine Antwort in xml

Manche Systeme tranformieren die Inhalte einer SOAP Kommunikation nach UTF-8. Man findet dann seltsame Konstrukte wie ö in den Antworten. Zumindest für die deutschen Sonderzeichen hilft untenstehende Replace-Orgie:

//  Apply some extra transformations accordingly to
//  http://www.utf8-zeichentabelle.de/unicode-utf8-table.pl?number=1024&htmlent=1
$xml = str_replace("ö", "ö", $xml);
$xml = str_replace("Ö", "Ö", $xml);
$xml = str_replace("ä", "ä", $xml);
$xml = str_replace("Ä", "Ä", $xml);
$xml = str_replace("Ü", "Ü", $xml);
$xml = str_replace("ü", "ü", $xml);
$xml = str_replace("ü", "ü", $xml);
$xml = str_replace("ß", "ß", $xml);

php, soap

  1. No comments yet.
  1. No trackbacks yet.