【问题标题】:Salesforce error: Element {}item invalid at this locationSalesforce 错误:元素 {}item 在此位置无效
【发布时间】:2014-01-04 21:23:40
【问题描述】:

我正在使用下面的代码通过 php 连接到 salesforce

 require_once ('SforcePartnerClient.php');
require_once ('SforceHeaderOptions.php');  
require_once ('SforceMetadataClient.php'); 

$mySforceConnection = new SforcePartnerClient(); 
$mySforceConnection->createConnection("cniRegistration.wsdl");
$loginResult = $mySforceConnection->login("username", "password.token");

$queryOptions = new QueryOptions(200);

try {

  $sObject = new stdclass();
  $sObject->Name = 'Smith';
  $sObject->Phone = '510-555-5555';
  $sObject->fieldsToNull = NULL;


  echo "**** Creating the following:\r\n";
  $createResponse = $mySforceConnection->create($sObject, 'Account');

  $ids = array();
  foreach ($createResponse as $createResult) {
    print_r($createResult);
    array_push($ids, $createResult->id);
  }

} catch (Exception $e) {

  echo $e->faultstring;
}

但是上面的代码是连接到salesforce数据库的。 但是没有执行创建命令。它给了我以下错误消息

创建以下内容:元素{}此位置的项目无效

谁能建议我克服上述问题

【问题讨论】:

    标签: php salesforce salesforce-service-cloud


    【解决方案1】:

    MAK,在您的示例代码中缺少 SessionHeader 和 Endpoint 设置调用

    $mySforceConnection->setEndpoint($location);
    $mySforceConnection->setSessionHeader($sessionId);
    

    设置完这些后,如果您仍然发现问题,请检查命名空间 urn

    $mySforceConnection->getNamespace
    

    它应该与您的 wsdl 中的 targetNamespace 值匹配

    【讨论】:

      【解决方案2】:

      $mySforceConnection 的值应该指向 partner.wsdl.xml 的 xml 文件。 例如 $SoapClient = $sfdc->createConnection("soapclient/partner.wsdl.xml");

      尝试添加下面的 sn-p 代码以引用 WSDL。

      $sfdc = new SforcePartnerClient();
                      // create a connection using the partner wsdl
                      $SoapClient = $sfdc->createConnection("soapclient/partner.wsdl.xml");
      
                      $loginResult = false;
      
                      try {
                          // log in with username, password and security token if required
                          $loginResult = $sfdc->login($sfdcUsername, $sfdcPassword.$sfdcToken);
                      } 
                      catch (Exception $e) {
                          global $errors;
                          $errors = $e->faultstring;
                          echo "Fatal Login Error <b>" . $errors . "</b>";
                          die;
                      }           
                      // setup the SOAP client modify the headers
                      $parsedURL = parse_url($sfdc->getLocation());
                      define ("_SFDC_SERVER_", substr($parsedURL['host'],0,strpos($parsedURL['host'], '.')));
                      define ("_SALESFORCE_URL_", "https://test.salesforce.com");
                      define ("_WS_NAME_", "WebService_WDSL_Name_Here");
                      define ("_WS_WSDL_", "soapclient/" . _WS_NAME_ . ".wsdl");
                      define ("_WS_ENDPOINT_", 'https://' . _SFDC_SERVER_ . '.salesforce.com/services/wsdl/class/' . _WS_NAME_);
                      define ("_WS_NAMESPACE_", 'http://soap.sforce.com/schemas/class/' . _WS_NAME_);
      
                      $urlLink = '';
                      try {
                          $client = new SoapClient(_WS_WSDL_);
                          $sforce_header = new SoapHeader(_WS_NAMESPACE_, "SessionHeader", array("sessionId" => $sfdc->getSessionId()));
                          $client->__setSoapHeaders(array($sforce_header));
      
                      } catch ( Exception $e ) {
                          die( 'Error<br/>' . $e->__toString() );
                      }
      

      请查看Tech Thought 上的链接以获取有关错误的更多详细信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-07
        • 2018-10-23
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 2019-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多