![](/img/trans.png)
[英]Unable to connect to Microsoft Dynamics CRM with PHP and Curl
[英]PHP curl talking to Microsoft Dynamics CRM 2011
我試圖從位於遠程主機上的Microsoft Dynamics CRM 2011 Online中提取一些數據; 它是有效的,如果我manualy(從瀏覽器)登錄並執行我的服務器在Linux主機上運行PHP,但當然我想驗證和運行CRUD操作沒有我的調解:)。
但它不斷向我展示“物體移到這里”。 驗證頁面。 如果我設置CURLOPT_FOLLOWLOCATION => 1,它會顯示crm的登錄頁面。
如果有人能提出任何解決問題的線索......謝謝!
<?php
$useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
$urlValue = "/LeadSet?$select=Address1_City,FirstName,LastName";
$username = "domain\user";
$pass = "pass";
$handle = curl_init();
curl_setopt_array($handle,
array (
CURLOPT_USERAGENT => $useragent,
CURLOPT_USERPWD => $username . ':' . $pass,
CURLOPT_HTTPAUTH => CURLAUTH_ANY,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_URL => 'https://myhost.com/xrmservices/2011/OrganizationData.svc',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $urlValue,
CURLOPT_RETURNTRANSFER => true,
)
);
$response = curl_exec($handle);
curl_close($handle);
header('Content-Type: text/plain;');
print_r($response);
我解決了da問題通過ntml進行身份驗證,此代碼顯示了如何從JSON格式的CRM中檢索聯系人。
$url='http://<server_adress>/organizationName/XRMServices/2011/OrganizationData.svc/ContactSet';
$ch = curl_init();
$headers = array(
'Method: GET',
'Connection: keep-alive',
'User-Agent: PHP-SOAP-CURL',
'Content-Type: application/json; charset=utf-8',
'Accept: application/json',
'Host <server network adress>');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_USERPWD, '<user>:<password>');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
//echo $response;
$array=json_decode($response, true);
$size=count($array['d']['results']);
echo "Numero de registos:".$size."<p>";
echo "Contactos:<p>";
for($i=0;$i<$size;$i++){
echo "Nome: ". $array['d']['results'][$i]['FullName']."<p>";
echo "Cidade: ". $array['d']['results'][$i]['Address1_City']."<p>";
echo "Emprego: ". $array['d']['results'][$i]['JobTitle']."<p>";
echo "Morada: ". $array['d']['results'][$i]['Address1_Name']."<p>";
echo "Telefone: ". $array['d']['results'][$i]['Address1_Telephone1']."<p>";
echo "Email: ". $array['d']['results'][$i]['EMailAddress1']."<p>";
echo "Pais: ". $array['d']['results'][$i]['Address1_Country']."<p>";
echo "Codigo-postal: ". $array['d']['results'][$i]['Address1_PostalCode']."<p>";
echo "Criado por: ". $array['d']['results'][$i]['CreatedBy']['Name']."<p>";
echo "...................................................................................<p>";
}
如果有人知道如何在休息終點進行crud操作請告訴我。
我擔心我已經回答了我自己的問題,我想要實現的目標是不可能的,因為這樣: 身份驗證只能在應用程序中實現 。
如上所述:
http://msdn.microsoft.com/en-us/library/gg334279
我正在嘗試從遠程站點進行身份驗證。
添加以下CURL選項有幫助嗎?
CURLOPT_HTTPAUTH => CURLAUTH_NTLM
它為我做了伎倆。 顯然,我連接的服務器不支持基本的HTTP身份驗證,但強制執行NTLM。 在你的情況下可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.