Мне нужно получить доступ к ведущим (создать новое руководство и получить список) в crm 2011 через веб-службы. Я уже сделал приложение в c # / asp.net (он работает), но теперь я должен сделать это в php, и я застрял.
Я пытаюсь: https://code.google.com/p/php-dynamics-crm-2011/, но он не работает, потому что он поддерживает только аутентификацию федерации и мой активный каталог.
Я пытаюсь подключиться к nusoap, но это очень запутанно.
Я генерирую классы службы обнаружения и организации службы с помощью wsdl2php: http://www.urdalen.no/wsdl2php/, но я не знаю, что делать с классами.
У кого-то есть примеры использования этих классов?
MSCRM 2013 и, вероятно, 2011 используют NTLM для аутентификации веб-приложений.
Для запроса данных вы можете использовать закодированный по URL-адрес FetchXML
http://msdn.microsoft.com/en-us/library/gg328117.aspx
Вы можете получить правильный XML из CRM, экспортировав XML в расширенный поиск и выполнив запрос с помощью метода RetrieveMultiple, например.
Я добавляю пример с 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); }