2009-10-21 6 views
6

私は新しい連絡先とphpを使用しているリードを作成したいと思います。私はmscrm 3 Webサービスのメソッドを呼び出す方法を理解できません。PHPのSoapクラスを使用したMicrosoft CRM 3.0のWebサービス

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

mscrm 4.0の例では、SOAPヘッダーとエンベロープを含む大量のXMLが含まれているようです。

私は、石鹸クラスを使用するとこれをバイパスし、余分なxmlを私のために書くようになっているので、パラメータの配列を持つ関数を呼び出すだけです。

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

サンプルコードを提供できるmscrm 3で誰かがこれをやったことがありますか、おそらくCreate()メソッドを正しく呼び出す方法として私にいくつかのポインタを教えてください。

答えて

3

私が代わりにコールのsendメソッドを使用して、一連の文字列としてXMLメッセージNusoapを使用することにより、建設後にこの作業を取得することができました。これで、期待どおりに動作します。呼び出しメソッドを使用すると、ms crm 3 Webサービスで必要とされたものとは異なるXMLが返されているように見えました。

2

まともなSOAPツールキットは、自動的に正しいXMLを吐き出します。この男をチェックアウト:

http://us2.php.net/xmlrpc_encode_request

+0

私は本当に問題を抱えているPHP Soapクラスを使用しています。どのパラメータを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); 
    } 
} 
関連する問題