I added the __setSoapHeader() to allow me to write a custom Binding
for eBay.  I needed to be able to flow an eBay CustomSecurityHeader in
the SoapHeader.  An extract of its use is as follows (I've modified
the code a little to show how you would use it directly on the proxy
rather than in a custom binding for clarity, but to preserve the
protocol/business logic separation, this is best done in a binding):

            $requester_credentials =
            $requester_credentials->eBayAuthToken = $this-
            $credentials = $requester_credentials-
            $credentials->AppId    = $this->config['appid'];
            $credentials->DevId    = $this->config['devid'];
            $credentials->AuthCert = $this->config['authcert'];
            $response = $proxy->GetSearchResults($request);

I think it would be good to provide the equivalent on the server
side.  This would probably be best used by custom binding
implementations to keep header handling separate from business logic
(I'm not sure how this could be cleanly done any other way since an
SCA component does not know about the binding implementation, so can't
easily explicitly request the header).

Ideally the SoapServer would provide a hook for this to be
implemented, but unfortunately this is not the case (see
http://bugs.php.net/bug.php?id=38309).  It may be possible to extend
the SCA_Bindings_ws_ServiceRequestHandler to parse out the header into
an SDO, but this will impact performance (the SoapServer has already
parsed the request once).

We may be able to request that the SoapServer provide the hook (or
offer to contribute it), if that's what we decide is the best way

On 26 Feb, 11:51, [EMAIL PROTECTED] wrote:
> On 26 Feb, 00:54, "[EMAIL PROTECTED]"
> <[EMAIL PROTECTED]> wrote:
> > Hi,
> > I'm working with a medium sized telco in Australia to reimplement
> > their CRM. First thing we're doing is to turn all their core services
> > into SOAP exposed services.
> > SOAP headers would make our life a lot easier. I've read the
> > documentation and had a quick look at the source code - but it seems
> > as though there's no way to do this.
> > Is there technical limitations as to why this isn't implemented? We
> > have a few developers here, and if it's not too difficult to implement
> > we may be ale to allocate resources to implementing it.
> > Great work, by the way.
> > Regards,
> > Kieran
> Hi Kieran and thanks:-)
> Do you mean you want to be able to set the SOAP hearders that are sent
> with a SOAP request?  Looking at the AVOCET branch in CVS it seems
> Graham Charters has had this problem as a method was added to allow
> SOAP headers to be set. If you look in the branch at file SCA/Bindings/
> ws/Proxy.php there is a new method.
> public function __setSoapHeader($header_sdo, $ns, $name) {
> I don't see any examples of how to use it though so maybe Graham will
> comment with some detail on the ins and outs of the change.
> If you want to read the SOAP headers in a service then I'm not sure
> how you go about it at present. There is no technical reason why we
> shouldn't allow access to the headers but we would have to add an API
> to retireve the information for a call.
> Thanks for the offer of help it's very welcome. Lets discuss your
> exact requirements here then we can work out how we implement it.
> Regards
> Simon

You received this message because you are subscribed to the Google Groups 
"phpsoa" group.
To post to this group, send email to phpsoa@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 

Reply via email to