【问题标题】:How to troubleshoot PHP-EWS/SOAP error?如何解决 PHP-EWS/SOAP 错误?
【发布时间】:2011-07-27 08:51:12
【问题描述】:

去年我制作了一个 PHP 项目,该项目使用 Exchange Web 服务与 Exchange 2010 Server 进行交互。我刚刚回到这个项目,当我尝试使用任何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);

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

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

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

【问题讨论】:

    标签: php soap curl exchangewebservices


    【解决方案1】:

    我曾经从事过一个类似的项目,但涉及 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 中的 authorizingcalling MS SPS web service 的帖子。

    【讨论】:

    • 谢谢!事实证明,这完全是因为 EWS 的身份验证没有正确设置,我的代码没有问题:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    相关资源
    最近更新 更多