在使用 PHP - Curl - 和 Soapui(构造和验证必要的 soap/xml 脚本以在 Curl Postfields 中发送)时,我发现在尝试例如将联系人添加到默认联系人文件夹时,我得到的所有回报都是xml 格式的 wsdl 定义。我相信我已经通过使用设置为的 Curl 代码解决了我之前的一些问题:
$ch = curl_init('https://'.$host.'/ews/services.wsdl');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_NONE);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$password);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8' , 'Expect:'));
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET" ); *this resolves the 405 http code return*
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlstr);
$response = curl_exec($ch);
$xmlstr中的数据为:
$xmlstr = <<<XML
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Body>
<CreateItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<SavedItemFolderId xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<DistinguishedFolderId Id="contacts" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"/>
</SavedItemFolderId>
<Items xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<Contact xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
<FileAs>Friend A</FileAs>
<GivenName>Don</GivenName>
<CompanyName>AdventureWorks</CompanyName>
<EmailAddresses>
<Entry Key="EmailAddress1">don@example.com</Entry>
</EmailAddresses>
</Contact>
</Items>
</CreateItem>
</soap:Body>
</soap:Envelope>
XML;
服务器的响应/返回是:
HTTP/1.1 200 OK内容类型
: text
/
xml最后修改时间
:星期二,2013 年 2 月
5
日 23:00:32 GMT真正
的 X-Powered-By:ASP.NET
日期:星期一,2013 年 4 月 8 日 10:13:46 GMT
内容长度:101206
后跟 wsdl 文件中的 xml 格式定义。
我会很感激这方面的一些指导。我在几种编码语言方面经验丰富,但我目前不了解soap/xml 和PHP 中的Curl 组件。