6

PHP を使用して新しい連絡先と見込み客を作成したいと考えています。mscrm 3 Web サービスのメソッドを呼び出す方法がよくわかりません。

php の soap クラスは非常に使いやすいようです。crm Web サービスに接続して認証し、使用可能な機能のリストを取得できますが、それらを呼び出す方法がわかりません。

私は、soap ヘッダーやエンベロープを含む大量の XML を含むと思われる mscrm 4.0 の例を見てきました。

石鹸クラスを使用するとこれがバイパスされ、余分な xml がすべて書き込まれるので、パラメーターの配列を使用して関数を呼び出すだけでよいという印象を受けましたか?

私はここで完全に間違っていますか?

サンプルコードを提供できるmscrm 3でこれを行った人はいますか、またはCreate()メソッドを正しく呼び出す方法としていくつかのポインタを教えてくれますか?

4

4 に答える 4

3

Nusoapを使用してこれを機能させることができました。構築後、呼び出しの代わりにsendメソッドを使用して一連の文字列としてXMLメッセージを作成しました。これで、期待どおりに機能するようになりました。callメソッドを使用すると、ms crm3Webサービスで必要とされるものとは異なるXMLが返されるように見えました。

于 2009-10-27T23:24:49.400 に答える
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);
    }
}
于 2009-11-25T21:38:51.180 に答える
2

Dynamics CRM SOAP を PHP で動作させるのにも苦労しましたが、しばらくすると動作するようになりました。http://www.ifc0nfig.com/working-with-microsoft-dynamics-crm-4-0-soap-interface-with-php-and-nusoap/ - 私が作成した小さなクラスをダウンロードできます。 :)

于 2010-02-28T10:32:31.773 に答える