2009-10-21 9 views
6

Chciałbym tworzyć nowe kontakty i kontakty za pomocą php. Nie wiem, jak nazwać metody usługi internetowej mscrm3.Usługa internetowa Microsoft CRM 3.0 za pośrednictwem PHP Klasa Mydła

Klasa mydeł php wydaje się dość prosta w użyciu. Jestem w stanie połączyć się i uwierzytelnić w usłudze crm i uzyskać listę dostępnych funkcji, jednak nie jestem pewien, jak je wywoływać.

Widziałem przykłady dla mscrm 4.0, które wydają się obejmować masę XML, w tym nagłówki mydeł i koperty.

Mam wrażenie, że używanie klasy mydlanej omija to i napisze dla mnie cały dodatkowy xml, więc wszystko, co muszę zrobić, to wywołać funkcję z tablicą parametrów?

Czy całkowicie się mylę?

Czy ktoś zrobił to z mscrm 3, który może dostarczyć przykładowy kod, lub może dać mi kilka wskazówek, jak poprawnie wywołać metodę Create()?

Odpowiedz

3

udało mi się uzyskać tej pracy za pomocą NuSOAP i po budowie komunikatu XML jako seria napisów z wykorzystaniem metody wysyłania zamiast rozmowy. To działa teraz zgodnie z oczekiwaniami. Wydawało się, że za pomocą metody call zwracano inne XML niż to, co było wymagane przez serwis internetowy ms crm3.

2

Przyzwoity zestaw narzędzi SOAP automagicznie wypisze poprawny kod XML. Sprawdź ten facet:

http://us2.php.net/xmlrpc_encode_request

+0

Używam klasy PHP Soap, gdzie naprawdę mam problem. Wiedzę, jakie parametry przekazać do metody create() i poprawnie je sformatować . – 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); 
    } 
} 
Powiązane problemy