【问题标题】:Working example of PHP's __dorequest method for SOAP?用于 SOAP 的 PHP __dorequest 方法的工作示例?
【发布时间】:2011-01-11 03:35:29
【问题描述】:

我正在尝试使用来自 PHP 的 MS Exchange 2007 Web 服务,我的第一个障碍(当然)是在创建 SoapClient 对象时成功地对 wsdl 文件进行身份验证。

我可以通过 curl 获取 WSDL 文件,只需设置 HTTPAUTHUSERPWD

   $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,但我不喜欢它的一些核心方法,而且我认为我不需要一个完整的库来获得我知道可以从上面的代码中获得的一个功能。

我发现了两个不同(几乎相同)的示例,它们展示了如何为 Exchange WS 扩展 SoapClient 类,但它们都不起作用,也没有多大意义。我捡到的主要是它使用__dorequest方法在发送之前修改Soap请求,但是php.net上的文档不是很真实或直观,所以我不确定这种方法是否允许我只需使用 curl 进行身份验证并获取 WSDL。

任何人都可以演示一种清晰而简单的方法来首先通过 curl 进行身份验证并将标头用于未来的 SoapRequest(包括初始 WSDL 检索)或扩展类以便它使用上述代码进行请求?

【问题讨论】:

    标签: php soap exchange-server


    【解决方案1】:

    SoapClient 接受 SOAP_AUTHENTICATION_BASIC and SOAP_AUTHENTICATION_DIGEST 作为身份验证机制,NTLM authentication was already requested as you can see here

    我以前从来不需要依赖 NTLM 身份验证方法,但在谷歌搜索后,我发现了一些有趣的文章 but this seems to be the ultimate solution for NTLM authentication with PHP's SOAP

    我希望这能解决您的问题。 =)

    【讨论】:

    • 不幸的是,最后一个链接是我在帖子中提到的那个。我希望可能有一个精简的版本或示例,因为他们的解决方案是处理所有传出的 SOAP 请求(我认为),我只需要一些东西来进行初始身份验证(此时是为了概念证明)。
    • -2 是个混蛋,在 f'ing 问题中看不懂 BASIC 这个词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    相关资源
    最近更新 更多