php - 使用 Web 服务访问动态 crm 2011
Posted
技术标签:
【中文标题】php - 使用 Web 服务访问动态 crm 2011【英文标题】:php - access dynamics crm 2011 with web services 【发布时间】:2013-06-04 08:37:02 【问题描述】:我必须通过 Web 服务在 crm 2011 中访问潜在客户(创建新潜在客户并获取列表)。 我已经在 c#/asp.net 中制作了一个应用程序(它可以工作),但现在我必须在 php 中完成它并且我被卡住了。
我尝试:https://code.google.com/p/php-dynamics-crm-2011/ 但它不起作用,因为它只支持联合身份验证并且我的活动目录。
我尝试与 nusoap 建立联系,但它非常令人困惑。
我生成发现服务类 和 wsdl2php 的组织服务:http://www.urdalen.no/wsdl2php/ 但我不知道如何处理这些课程。
有人有示例如何使用这些类?
【问题讨论】:
也检查这个问题:***.com/questions/16890036/… 我不明白,crm已经提供了web服务,我需要知道如何用php来使用它们。 我的只是一个建议,您可以使用任何语言使用 crm 2011 网络服务,但更简单的方法是创建一个充当代理的网络服务。 使用 PHP OData 端点和 OData for PHP SDK。 (否则,假设你做的一切都是正确的,你会在 PHP 中使用它们,就像在 javascript 中一样。) 【参考方案1】:MSCRM 2013 和可能 2011 正在使用 NTLM 对 Web 服务进行身份验证。
对于数据查询,可以使用url编码的FetchXML
http://msdn.microsoft.com/en-us/library/gg328117.aspx
您可以通过在高级搜索中导出 XML 并使用 RetrieveMultiple 方法执行查询,例如从 CRM 获取正确的 XML。
我正在添加一个带有 SOAP 信封和 CURL POST 查询的示例,通过 NTLM 进行身份验证。
<?php
$soap_envelope = <<<END
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<RetrieveMultiple xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<query i:type="a:FetchExpression" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">
<a:Query><fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
<entity name='contact'>
<attribute name='fullname' />
<attribute name='parentcustomerid' />
<attribute name='telephone1' />
<attribute name='emailaddress1' />
<attribute name='contactid' />
<order attribute='fullname' descending='false' />
<filter type='and'>
<condition attribute='ownerid' operator='eq-userid' />
<condition attribute='statecode' operator='eq' value='0' />
</filter>
</entity>
</fetch></a:Query>
</query>
</RetrieveMultiple>
</s:Body>
</s:Envelope>
END;
$soap_action = 'http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/RetrieveMultiple';
$req_location = 'http://crm.server.local/YourOrganization/XRMServices/2011/Organization.svc/web';
$headers = array(
'Method: POST',
'Connection: Keep-Alive',
'User-Agent: PHP-SOAP-CURL',
'Content-Type: text/xml; charset=utf-8',
'SOAPAction: "'.$soap_action.'"'
);
$user = 'YOURDOMAIN\YOURUSERNAME';
$password = '**********';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $req_location);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_POSTFIELDS, $soap_envelope);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_USERPWD, $user.':'.$password);
$response = curl_exec($ch);
if(curl_exec($ch) === false)
echo 'Curl error: ' . curl_error($ch);
else
var_dump($response);
【讨论】:
以上是关于php - 使用 Web 服务访问动态 crm 2011的主要内容,如果未能解决你的问题,请参考以下文章