note 107235 added to class.soapclient

From: Date: Fri, 20 Jan 2012 01:42:56 +0000
Subject: note 107235 added to class.soapclient
Groups: php.notes php.notes 
Request: Send a blank email to php-notes+get-185701@lists.php.net to get a copy of this message
For some servers which don't accept elements like <ns1:ElementType>, you'll need to replace the those elements with the format <ElementType xmlns="namespace">. If you have nested namespaces, you might need to replace every instance, so that there is no ambiguity. The requests will be longer, however. The __getLastRequest also needs to be overridden for tracing purposes. <?php class My_SoapClient extends SoapClient { function __doRequest($request, $location, $action, $version) { $request = this->alterRequest($request); return parent::__doRequest($request, $location, $action, $version); } public function __getLastRequest() { $request = parent::__getLastRequest(); $request = this->alterRequest($request); return $request; } private function alterRequest($request) { $ns1 = "urn:some.thing.sample.com"; $ns2 = "https://www.sample.com/"; $request = str_replace(array(' xmlns:ns1="'.$ns1.'"', 'xmlns:ns2="'.$ns2.'"'), array("", ""), $request); $request = preg_replace('/<ns1:([^>]+)/', '<$1 xmlns="'.$ns1.'"', $request); $request = preg_replace('/<\/ns1:([^>]+)/', '</$1', $request); $request = preg_replace('/<ns2:([^>]+)/', '<$1 xmlns="'.$ns2.'"', $request); $request = preg_replace('/<\/ns2:([^>]+)/', '</$1', $request); return $request; } } ?> ---- Server IP: 69.147.83.197 Probable Submitter: 72.11.126.102 ---- Manual Page -- http://www.php.net/manual/en/class.soapclient.php Edit -- https://master.php.net/note/edit/107235 Del: integrated -- https://master.php.net/note/delete/107235/integrated Del: useless -- https://master.php.net/note/delete/107235/useless Del: bad code -- https://master.php.net/note/delete/107235/bad+code Del: spam -- https://master.php.net/note/delete/107235/spam Del: non-english -- https://master.php.net/note/delete/107235/non-english Del: in docs -- https://master.php.net/note/delete/107235/in+docs Del: other reasons-- https://master.php.net/note/delete/107235 Reject -- https://master.php.net/note/reject/107235 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#185701) next »