SOAP için PHP'nin __ dorequest yöntemi Çalışma örneği?

1 Cevap php

Ben PHP MS Exchange 2007 Web Hizmetleri kullanmaya çalışıyorum ve SoapClient nesnesi oluştururken (elbette) benim ilk budak başarıyla wsdl dosyası kimlik doğrulaması.

Ben sadece HTTPAUTH ve USERPWD ayarlayarak kıvrılma yoluyla WSDL dosyasını almak mümkün duyuyorum:

   $exch = curl_init($exch_url);
   curl_setopt($exch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($exch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
   curl_setopt($exch, CURLOPT_USERWD, $user.":".$pwd);

Bu şaşırtıcı derecede kolay oldu. Ama SoapClient benim kimlik doğrulama yöntemi ayarı seçeneği (ben biliyorum) yok. Ben nu_soap baktım, ama ben onun temel yaklaşımı bazı sevmiyorum ve ben sadece ben yukarıdaki kodu alabilirsiniz bildiğimiz bir özellik almak için tam bir kütüphane gerekir sanmıyorum.

Ben Borsası WS için SoapClient sınıfının nasıl genişletildiğini gösteren iki farklı (hemen hemen aynı) örnekleri bulundu, ama ne kadar mantıklı çalışmış ya yaptı. Ben aldım ana şey göndermeden önce Sabun isteğini değiştirmek için __dorequest yöntemini kullanıyor olmasıydı, ama dokümantasyon php.net üzerinde çok gerçekçi ya da kolay değildir, bu yüzden emin değilim Bu yöntem bana sadece WSDL kimlik doğrulaması ve almak için curl kullanmak için izin verir.

Herkes ilk kıvrılma yoluyla kimlik ve (ilk WSDL alma dahil) gelecekte SoapRequests için başlıklarını kullanın veya istek için yukarıdaki kod bit kullanır, böylece sınıfını genişletmek için ya bir açık ve basit bir şekilde göstermek miyim?

1 Cevap

SoapClient kabul SOAP_AUTHENTICATION_BASIC ve SOAP_AUTHENTICATION_DIGEST as authentication mechanisms, NTLM authentication was already requested as you can see here.

Ben önce NTLM auth yöntemine güvenmek için gerekli hiç ama bazı google'da sonra bazı ilginç makaleler but this seems to be the ultimate solution for NTLM authentication with PHP's SOAP buldum.

Ben bu sorunu çözer umarım. =)