2009-10-21 23 views
6

Tôi muốn tạo các liên hệ và khách hàng tiềm năng mới bằng cách sử dụng php. Tôi không thể tìm ra cách gọi các phương thức của dịch vụ web mscrm 3.Dịch vụ web Microsoft CRM 3.0 qua lớp Xà phòng PHP

Lớp xà phòng php có vẻ khá đơn giản để sử dụng. Tôi có thể kết nối và xác thực với dịch vụ web crm và nhận được một danh sách các chức năng có sẵn tuy nhiên tôi không chắc chắn làm thế nào để đi về gọi chúng.

Tôi đã xem các ví dụ về mscrm 4.0 có vẻ liên quan đến khối lượng của XML bao gồm tiêu đề xà phòng và phong bì.

Tôi đang ấn tượng rằng việc sử dụng lớp xà phòng bỏ qua điều này và sẽ viết tất cả xml thừa cho tôi vì vậy tất cả những gì tôi cần làm là gọi hàm với một mảng tham số?

Tôi có hoàn toàn sai ở đây không?

Có ai đã làm điều này với mscrm 3 có thể cung cấp một số mã mẫu hay có thể cho tôi một vài gợi ý về cách gọi chính xác phương thức Create()?

Trả lời

3

tôi đã có thể làm việc này bằng cách sử dụng Nusoap và sau khi xây dựng thông điệp XML như là một loạt các chuỗi bằng cách sử dụng phương pháp gửi thay vì gọi. Điều này bây giờ hoạt động như mong đợi. Dường như việc sử dụng phương thức gọi đã trả về XML khác với những gì được yêu cầu bởi dịch vụ web msm 3.

2

Bất kỳ bộ công cụ SOAP phong nha nào sẽ tự động nhổ ra đúng XML. Kiểm tra anh chàng này:

http://us2.php.net/xmlrpc_encode_request

+0

Tôi đang sử dụng lớp Xà phòng PHP, nơi tôi thực sự gặp sự cố là biết thông số nào để chuyển sang phương thức create(). . – Ben

2
require_once ('/var/mtp/lib/vendor/nusoap/lib/nusoap.php'); 

$login ='domain\username'; 
$pass ='password'; 
$useCURL = true; 

$client = new nusoap_client('http://server:5555/mscrmservices/2006/crmservice.asmx?wsdl', 'wsdl'); 
$client->setCredentials($login, $pass, 'ntlm'); 
$client->setUseCurl($useCURL); 
$client->useHTTPPersistentConnection(); 
$client->soap_defencoding = 'UTF-8'; 

$err = $client->getError(); 
if ($err) { 
    echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; 
    echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>'; 
    exit(); 
} 

$soapHeader='<soap:Header>' . 
     '<CallerId xmlns="http://schemas.microsoft.com/crm/2006/WebServices">'. 
     '<CallerGuid xmlns="http://schemas.microsoft.com/crm/2006/CoreTypes">00000000-0000-0000-0000-000000000000</CallerGuid></CallerId>' . 
    '</soap:Header>'; 

$soapBody='<soap:Body>' . 
    '<entity xmlns="http://schemas.microsoft.com/crm/2006/WebServices" xsi:type="lead">' . 
     '<ownerid type="Owner">2408c7dc-c0a3-dd11-b3cd-001a4bd3009a</ownerid>' .   
     '<firstname>Fred</firstname>' . 
     '<lastname>Bloggs</lastname>' . 
    '</entity>' . 
    '</soap:Body>'; 


$xml = '<?xml version="1.0" encoding="utf-8"?>' . 
    '<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/">' . 
    $soapHeader . 
    $soapBody . 
    '</soap:Envelope>'; 

//SOAP call 
$result = $client->send($xml,'http://schemas.microsoft.com/crm/2006/WebServices/Create'); 

//result 
if ($client->fault) { //check for fault 
    echo '<p><b>Fault: ';   
    print_r($result);   
    echo '</b></p>'; 
} 

else { //no fault 
    $err = $client->getError(); 
    if ($err) { // error 
     echo 'Error: ' . $err . ''; 
     echo "\n\n# # # # # # # Request # # # # # # #\n"; 
     var_dump($client->request); 
     echo "\n\n# # # # # # Response # # # # # # #\n"; 
     var_dump($client->response); 
    } 
    else { // display the result 
    print_r($result); 
    } 
} 
Các vấn đề liên quan