繁体   English   中英

如何解决PHP-EWS / SOAP错误?

[英]How to troubleshoot PHP-EWS/SOAP error?

去年,我使用Exchange Web服务创建了一个与Exchange 2010 Server交互的PHP项目。 我刚刚回到这个项目,当我尝试使用任何php-ews方法时,我收到此错误:

SoapClient::__doRequest() returned non string value

我并不完全理解所有SOAP和CURL代码是如何工作的,所以有人可以给我一些关于如何解决此问题的指示吗?

我尝试过的事情

当我转到在Web浏览器中发送SOAP请求的URL时,我被警告它没有有效的证书,因此我将以下代码放在我的NTLMSoapClient和NTLMStream中:

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

但我仍然收到同样的错误。

当我在Web浏览器中浏览到该地址并忽略证书警告时,系统会提示我输入密码,它似乎只接受管理员密码,然后将其重定向到services.wsdl。

将我的代码中的用户名和密码更改为管理员用户名和密码没有任何区别。

我曾经在一个类似的项目上工作,但涉及PHP和MS Sharepoint Web服务。 我使用NuSoap库来促进使用SOAP。

我没有使用PHP EWS的经验,但我建议您查看请求和响应代码,数据和标题,以查看您发送和接收的确切内容。 此信息可能会帮助您找到问题(是身份验证错误还是无法获取wsdl描述或Web方法的无效参数等)。

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

有关我的经验的更多详细信息,请参阅我使用CURL和NuSoap从PHP 授权调用MS SPS Web服务的帖子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM