Как устранить ошибку PHP-EWS / SOAP? - PullRequest
3 голосов
/ 01 апреля 2011

В прошлом году я создал проект PHP, который взаимодействовал с Exchange 2010 Server с использованием веб-служб Exchange.Я только что вернулся в этот проект, и когда я пытаюсь использовать любой из методов php-ews , я получаю эту ошибку:

SoapClient::__doRequest() returned non string value

Я не совсем понимаю, каквесь код SOAP и CURL работает, поэтому кто-нибудь может дать мне несколько советов, как решить эту проблему?

Что я пробовал

Когда я иду вURL-адрес, на который отправляется запрос SOAP в веб-браузере, меня предупреждают, что у него нет действительного сертификата, поэтому я поместил следующий код в NTLMSoapClient и NTLMStream:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

Но я все еще получаю ту же ошибку.

Когда я просматриваю адрес в веб-браузере и игнорирую предупреждение сертификата, мне предлагается пароль, и кажется, что он принимает только пароль администратора, а затемОн перенаправляет меня на services.wsdl.

Смена имени пользователя и пароля в моем коде на админские не имеет никакого значения.

1 Ответ

3 голосов
/ 04 апреля 2011

Раньше я работал над аналогичным проектом, но с участием веб-сервисов PHP и MS Sharepoint.Я использовал библиотеку NuSoap для облегчения работы с SOAP.

У меня нет опыта работы с PHP EWS, но я бы порекомендовал вам изучить коды запросов и ответов, данные и заголовки, чтобы узнатьименно вы отправляете и получаете.Эта информация, вероятно, поможет вам найти вашу проблему (является ли это ошибкой аутентификации или невозможностью получить описание wsdl или неверные аргументы для веб-метода и т. Д.).

// For debugging purposes
// return transfer data as a result
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// read headers
curl_setopt($ch, CURLOPT_HEADER, 1);
// show request headers, will display all the outgoing info, including fields
curl_setopt($ch, CURLINFO_HEADER_OUT, true);

// Make the request
$data = curl_exec($ch);
$errors = curl_error($ch);
// get info about the transfer, for debugging purposes
$details = curl_getinfo($ch); 

curl_close($ch);

// Displaying debugging info
var_dump($data);
var_dump($errors);
var_dump($details);

Подробнее о моем опыте см. Мои сообщенияо авторизации и вызова веб-службы MS SPS из PHP с использованием CURL и NuSoap.

...