我正在尝试使用PHP的MS Exchange 2007 Web服务,我的第一个障碍(当然)在创建SoapClient对象时成功验证了wsdl文件。
我只需设置HTTPAUTH
和USERPWD
即可通过curl获取WSDL文件:
$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进行身份验证,并将头文件用于将来的SoapRequests(包括初始的WSDL检索),或者扩展该类以便它使用上面的代码来处理请求吗? / p>
答案 0 :(得分:0)
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。
我希望这能解决你的问题。 =)