Re: [SOAP] PHP5 SOAP Extension - Request Header Elements with Attributes
| From: | Rob Richards | Date: | Thu, 11 May 2006 23:43:55 +0000 |
| Subject: | Re: [SOAP] PHP5 SOAP Extension - Request Header Elements with Attributes | ||
| References: | 1 2 | Groups: | php.soap |
| Request: | Send a blank email to php-soap+get-2268@lists.php.net to get a copy of this message | ||
Dmitry,
I also was looking at something similar, but I was thinking more along the lines of using the php_libxml_import_node functionality within libxml.c, which creates no dependency on either extension. Once ext/soap registers handlers (one for the client and one for the server), it should be possible to do something like:
$domdoc = dom_import_simplexml($soapClient);
or
$sxe = simplexml_import_dom($soapServer);
I know the function names here are a bit misleading but they were created prior to making the import functionality more flexible and easier to plug in additional extensions. (Might be time to create some new function aliases for those).
It would take some thought to handle the interop of the document within ext/soap, but definitely possible. Not something that I was going to be looking at immediately, but thought I would toss this out now since the topic came up.
Rob
Dmitry Stogov wrote:
Hi David, Which kind of DOM do you mean? Do you mean ext/simplexml or ext/dom? I don't like make ext/soap dependent on them. Btw you probably can simple make it in PHP itself with something like this. class DomSoapClient extends SoapClient { function __doDomRequest($dom) { return string2dom($this->__doRequest(dom2string($dom), ...)); } } Isn't this enough for you? Or may be I misunderstood you. Thanks. Dmitry.-----Original Message----- From: David [mailto:me@contents.nl] Sent: Thursday, May 11, 2006 11:42 PM To: Dmitry Stogov Cc: Peter De Vries; Paul Osman; soap@lists.php.net Subject: Re: [SOAP] PHP5 SOAP Extension - Request Header Elements with Attributes Hi Dmitry, I want to extend the soap server and client implementation with functions that return the request (client) / response (server) as a dom document, instead of writing them to the output buffer. Capturing the output buffer and re-loading it into a dom document is a waste of resources. There are several ways to achieve this: 1. Seperate function with the same parameters as handle() or __call() 2. Add additional optional parameters or options to in to handle() and __call() which tell the function if it has to return the dom document 3. Always return the dom document with handle() or __call() 3. Use return_value_used to check if the function has to write to the output buffer or return the dom document. What do you think about adding this functionality and which option do you prefer? Kind regards, David Peter De Vries wrote:Have been struggling with something similar myselfrecently. Supportfor attributes is still limited. For now I solved it byoverriding the__doRequest method of the SoapClient object, loading therequest intoa DOM object, make the required modifications and send.It's a bit ofa hassle but it works fine. There's kind of an example on the __doRequest manual page. Peter. --- Paul Osman <paul@eval.ca> wrote:I've tried toHI There, I was wondering if there was a simple way to specify request header elements with attributes using the PHP5 SOAP extension?they're afigure it out from the docs for the SoapHeader class, butideas? Anylittle unclear and I see no mention of attributes. What I need is something like this: <SOAP-ENV:Header> <ns1:Security SOAP-ENV:mustUnderstand="1"> <ns2:Timestamp> ... </ns2:Timestamp> <ns1:UsernameToken> <Username> ... </Username> <Password Type="..."> ... </Password> </ns1:UsernameToken> </ns1:Security> </SOAP-ENV:Header> Notice the "Type" attribute of the "Password" element. Anyhelp would be greatly appreciated. Thanks, Paul