Рабочий пример PHP-метода __dorequest для SOAP? - PullRequest
1 голос
/ 30 января 2010

Я пытаюсь использовать веб-службы MS Exchange 2007 из PHP, и моя первая ошибка (конечно) успешно проходит аутентификацию в файле wsdl при создании объекта SoapClient.

Я могу получить файл WSDL через curl, просто установив HTTPAUTH и USERPWD:

   $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);

Это было удивительно легко. Но у меня нет возможности установить метод аутентификации в SoapClient (о котором я знаю). Я посмотрел на nu_soap, но мне не нравится какой-то из его основных подходов, и я не думаю, что мне нужна полная библиотека, только чтобы получить одну функцию, которую, я знаю, я могу получить из приведенного выше кода.

Я нашел два разных (почти идентичных) примера, показывающих, как расширить класс SoapClient для Exchange WS, но ни один из них не работал и не имел большого смысла. Главное, что я подобрал, было то, что он использовал метод __dorequest для изменения запроса Soap перед отправкой, но документация на php.net не очень реалистичная или интуитивно понятная, поэтому я не уверен, позволит ли этот метод мне просто использовать curl для аутентификации и получения WSDL.

Может ли кто-нибудь продемонстрировать ясный и простой способ либо сначала пройти аутентификацию с помощью curl и использовать заголовки для будущих запросов SoapRequest (включая начальный поиск WSDL), либо расширить класс так, чтобы он использовал приведенный выше фрагмент кода для запроса? 1013 *

1 Ответ

0 голосов
/ 01 февраля 2010

SoapClient принимает SOAP_AUTHENTICATION_BASIC и SOAP_AUTHENTICATION_DIGEST в качестве механизмов аутентификации, Аутентификация NTLM уже запрошена, как вы можете видеть здесь .

Раньше мне никогда не приходилось полагаться на метод аутентификации NTLM, но после некоторого поиска в Google я нашел несколько интересных статей , но это, кажется, окончательное решение для аутентификации NTLM с PHP SOAP .

Надеюсь, это решит вашу проблему. =)

...