Dönüştürün. NET sözdizimi PHP içine SoapHeader kullanılarak () çağrısı

2 Cevap ûnet

I SoapHeader () çağrısı kullanarak PHP içine bu. NET sözdizimi dönüştürmek gerekir.

esb.RequestServerVersionValue = new RequestServerVersion(); esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1;

Thanks a lot! :)

2 Cevap

$soapHeader = new SoapHeader(
                     'http://schemas.microsoft.com/exchange/services/2006/types',
                     'RequestServerVersion Version="Exchange2007_SP1"'
                     );

$ Client-> __setSoapHeaders ($ SoapHeader);

Bu temelde gerçekten ayarlanması için gereken bütün olduğunu. Ben ad ayarları ile Şaşırdınız. İlginçtir, RequestServerVersion başlık kamu klasörlerle çalışırken gereklidir, ancak Exchange 2007 posta kutusu öğeleri ile çalışırken gerekli görünmüyor.

Bu bağlantı özellikle yararlı oldu: nasıl hata ayıklamayı etkinleştirmek için bana gösterdi ve her öznitelik yaptım çok açık ne yaptı http://www.zimbra.com/forums/developers/5532-php-soap-vs-zimbra.html gibi.

Bu, Google arama sonucu: "RequestServerVersion t" bu iş için üretmek için gerekli geçerli XML gösterir

Ben şahsen başlıklarını SoapHeader sınıfını kullanırken ben onları istediğim şekilde başardı asla. Belki SoapClient class into consideration. As I answered in another question geçersiz kılma SO sizin ihtiyaçlarınıza SOAP mesajı yapı olabilir üzerinde özel bir almalısınız daha esnek olması için SoapClient::__doRequest() . Bu şekilde irade XML parçaları ekleyebilirsiniz.

class My_SoapClient extends SoapClient
{
    protected function __doRequest($request, $location, $action, $version) 
    {
        /*
         * $request is a XML string representation of the SOAP request
         * that can e.g. be loaded into a DomDocument to make it modifiable.
         */
        $domRequest = new DOMDocument();
        $domRequest->loadXML($request);

        // modify XML using the DOM API, e.g. get the <s:Header>-tag 
        // and add your custom headers
        $xp = new DOMXPath($domRequest);
        $xp->registerNamespace('s', 'http://www.w3.org/2003/05/soap-envelope');
        $headers = $xp->query('/s:Envelope/s:Header');
        if ($headers->length == 0) {
            $envelope = $xp->query('/s:Envelope')->item(0);
            $header = $domRequest->createElementNS('http://www.w3.org/2003/05/soap-envelope', 's:Header');
            $envelope->appendChild($header);
        } else {
            $header = $headers->item(0);
        }

        // now add your custom header
        $requestServerVersion = $domRequest->createElementNS('T_NAMSPACE', 't:RequestServerVersion');
        $requestServerVersion->setAttribute('Version', 'Exchange2007_SP1');

        $header->appendChild($requestServerVersion);

        $request = $domRequest->saveXML();
        return parent::__doRequest($request, $location, $action, $version);
    }
}

T_NAMSPACE öneki doğru ad değiştirilmesi gerekir t.