4

以下のコードを使用して、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 データベースに接続しています。しかし、作成コマンドを実行していません。以下のエラーメッセージが表示されます

以下を作成しています:要素 {}item はこの場所では無効です

上記の問題を克服するために誰かが私に提案できますか

4

2 に答える 2

3

MAK、サンプル コードで SessionHeader と Endpoint のセットアップ呼び出しが欠落しています

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

それらを設定した後、それでも問題が発生する場合は、名前空間の urn を確認してください

$mySforceConnection->getNamespace

wsdl のtargetNamespace値と一致する必要があります

于 2014-06-05T20:32:47.607 に答える
0

$mySforceConnection の値は、partner.wsdl.xml の 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のリンクを確認してください。

于 2014-02-24T08:25:30.843 に答える