无法在内部获得MS CRM 2016 API的响应

时间:2017-03-30 23:22:18

标签: php api odata dynamics-crm-2016

我们正在使用动态crm 2016内部使用IFD。我使用下面的代码来使用PHP中的API来获取CRM的领导

//$url = $crm_url . "XRMServices/2011/OrganizationData.svc/LeadSet($lead)";
$url = $crm_url . "api/data/v8.1/leads($lead)";

 $headers = array(
      'Method: GET',
        'OData-MaxVersion: 4.0',
        'OData-Version: 4.0',
      'Connection: keep-alive',
      'User-Agent: PHP-SOAP-CURL',
      'Content-Type: application/json; charset=utf-8',
      'Accept: application/json',
      'Host: ' . $host);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);
if( $response === false) { echo 'Curl error: ' . curl_error($ch);}
$status = curl_getinfo( $ch, CURLINFO_HTTP_CODE );echo "Status: $status ";
$response=json_decode($response, true);
foreach ($response as $id) {
                    $guid = $id['LeadId'];                  
                    echo 'GUID: ' . $guid. ' ';
                }
echo "Lead id: "; var_dump($response['LeadId']);
echo "<pre>";
print_r($response);
echo "</pre>";
curl_close($ch);

我收到了这个回复:

Status: 401 GUID: T GUID: GUID: Lead id: NULL
Array
    (
        [Message] => There was an error processing the request.
        [StackTrace] => 
        [ExceptionType] => 
    )

有人可以帮助我如何得到正确的答案。 如果还有其他方法,请告诉我。 非常感谢..

1 个答案:

答案 0 :(得分:0)

好像你的请求中没有填写leadid。

  

$ url = $ crm_url。 “API /数据/ V8.1 /引线(的 $铅)”;

您是否用guid替换了该变量?

  

为例:   https://contoso.api.crm.dynamics.com/api/data/v8.1/accounts(1e3983e8-7894-e511-80db-3863bb2e3248)

此外,测试查询的一个好方法是将它们粘贴到浏览器中。我用的是Chrome。使用IE,您需要禁用RSS源。

抱歉,我不熟悉php。