2009-10-21 13 views
6

Vorrei creare nuovi contatti e lead utilizzando php. Non riesco a capire come chiamare i metodi del servizio web mscrm 3.Servizio Web Microsoft CRM 3.0 tramite PHP Soap classe

La classe php soap sembra abbastanza semplice da usare. Sono in grado di connettermi e autenticarmi con il servizio web di CRM e ottenere un elenco di funzioni disponibili, tuttavia non sono sicuro su come chiamarle.

Ho visto esempi per mscrm 4.0 che sembrano coinvolgere masse di XML inclusi intestazioni di sapone e buste.

Ho l'impressione che l'utilizzo di una classe di sapone lo ignori e scriverà tutto l'xml in più per me, quindi tutto ciò che devo fare è chiamare una funzione con una serie di parametri?

Sono completamente sbagliato qui?

Qualcuno ha fatto questo con mscrm 3 che può fornire qualche codice di esempio, o forse darmi qualche suggerimento su come chiamare correttamente il metodo Create()?

risposta

3

sono stato in grado di ottenere questo lavoro utilizzando NuSOAP e dopo la costruzione del messaggio XML come una serie di stringhe utilizzando il metodo di invio, invece di chiamata. Questo ora funziona come previsto. Sembrava che l'utilizzo del metodo call restituisse un XML diverso da quello richiesto dal servizio Web ms crm 3.

2

Qualsiasi toolkit SOAP decente scatterà automagicamente il codice XML corretto. Dai un'occhiata a questo ragazzo:

http://us2.php.net/xmlrpc_encode_request

+0

Sto usando la classe PHP Soap, dove ho davvero dei problemi è sapere quali parametri passare al metodo create() e formattarli correttamente . – 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); 
    } 
} 
Problemi correlati