【问题标题】:Microsoft CRM 3.0 web service via PHP Soap class通过 PHP Soap 类的 Microsoft CRM 3.0 Web 服务
【发布时间】:2009-10-21 22:07:59
【问题描述】:

我想使用 php 创建新的联系人和潜在客户。我不太清楚如何调用 mscrm 3 Web 服务的方法。

php soap 类似乎很容易使用。我能够连接并验证到 crm Web 服务并获得可用功能的列表,但是我不确定如何调用它们。

我已经看到了 mscrm 4.0 的示例,这些示例似乎涉及大量 XML,包括肥皂标题和信封。

我的印象是使用soap类绕过了这个并且会为我编写所有额外的xml,所以我需要做的就是调用一个带有参数数组的函数吗?

我完全错了吗?

有没有人用 mscrm 3 做过这个,可以提供一些示例代码,或者给我一些关于如何正确调用 Create() 方法的指示?

【问题讨论】:

    标签: php web-services soap dynamics-crm dynamics-crm-3


    【解决方案1】:

    我已经能够通过使用 Nusoap 并在使用 send 方法而不是 call 将 XML 消息构造为一系列字符串来完成这项工作。这现在按预期工作。似乎使用 call 方法返回的 XML 与 ms crm 3 Web 服务所需的不同。

    【讨论】:

      【解决方案2】:

      任何体面的 SOAP 工具包都会自动吐出正确的 XML。看看这个人:

      http://us2.php.net/xmlrpc_encode_request

      【讨论】:

      • 我正在使用 PHP Soap 类,我真正遇到的问题是知道将哪些参数传递给 create() 方法并正确格式化它们。
      【解决方案3】:
      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);
          }
      }
      

      【讨论】:

        【解决方案4】:

        我也在努力让 Dynamics CRM SOAP 与 PHP 一起工作,但过了一段时间我设法让它工作了; http://www.ifc0nfig.com/working-with-microsoft-dynamics-crm-4-0-soap-interface-with-php-and-nusoap/ - 你可以下载我创建的一个可能有用的小类:)

        【讨论】:

          猜你喜欢
          • 2013-03-02
          • 1970-01-01
          • 2011-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多