2009-10-21 7 views
6

Me gustaría crear nuevos contactos y clientes potenciales usando php. No puedo entender cómo llamar a los métodos del servicio web mscrm 3.Servicio web de Microsoft CRM 3.0 vía PHP Clase de jabón

La clase de php soap parece bastante simple de usar. Puedo conectarme y autenticarme al servicio web crm y obtener una lista de las funciones disponibles, sin embargo, no estoy seguro de cómo llamarlas.

He visto ejemplos para mscrm 4.0 que parecen implicar masas de XML que incluyen encabezados y sobres.

Tengo la impresión de que el uso de una clase de jabón pasa por alto esto y escribiré todo el xml extra para mí, así que todo lo que tengo que hacer es llamar a una función con una matriz de parámetros.

¿Estoy completamente equivocado aquí?

¿Alguien ha hecho esto con mscrm 3 que pueda proporcionar algún código de muestra, o tal vez darme algunos consejos sobre cómo llamar correctamente al método Create()?

Respuesta

3

he podido conseguir este trabajo mediante el uso de NuSOAP y después de la construcción del mensaje XML como una serie de cadenas utilizando el método de envío en lugar de llamada. Esto ahora funciona como se esperaba. Parecía que usar el método de llamada devolvía XML diferente de lo que requería el servicio web ms crm 3.

2

Cualquier kit de herramientas SOAP decente escupirá automágicamente el XML correcto. Echa un vistazo a este individuo:

http://us2.php.net/xmlrpc_encode_request

+0

Estoy usando la clase PHP Soap, donde realmente estoy teniendo problemas es saber qué parámetros pasar al método create() y formatearlos correctamente . – 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); 
    } 
} 
Cuestiones relacionadas