Элемент salesforce Element {} недействителен в этом месте

Я использую приведенный ниже код для подключения к salesforce с помощью php

 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. Но не выполняет команды создания. это дает мне сообщение об ошибке ниже

Создание следующего: Элемент {} элемент недействителен в этом месте

может ли кто-нибудь предложить мне преодолеть вышеуказанную проблему


person MAK    schedule 17.12.2013    source источник
comment
Вы решили свою ошибку .. ??   -  person Sathya    schedule 17.02.2014
comment
Вы решили свою ошибку? Я также столкнулся с такой же ошибкой   -  person Maverick    schedule 15.10.2015


Ответы (2)


MAK, в вашем примере кода отсутствуют вызовы настройки SessionHeader и Endpoint

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

после их настройки, если вы все еще видите проблему, проверьте урну пространства имен

$mySforceConnection->getNamespace

Он должен соответствовать значению targetNamespace в вашем wsdl.

person ksugured    schedule 05.06.2014

значение $ mySforceConnection должно указывать на XML-файл partner.wsdl.xml. Например, $ SoapClient = $ sfdc-> createConnection ("soapclient / partner.wsdl.xml");

Попробуйте добавить приведенный ниже фрагмент кода для ссылки на 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 для более подробной информации об ошибке.

person Nawshine    schedule 24.02.2014