Глядя на свой след, вы, похоже, используете корпоративный клиент, и я могу предположить, что корпоративный WSDL.Это строго типизировано, и вы должны использовать WSDL, специфичный для вашей организации Salesforce.Если вы не используете WSDL, загруженный из вашей организации, в нем не будут определены правильные объекты и поля.
Я бы рекомендовал использовать партнерский клиент и партнерский WSDL.Это слабо напечатано и гораздо более гибко.Было бы легче работать, особенно если вы не знакомы с PHP или веб-сервисами.
Следующее должно сделать ваше обновление ...
$sObject1 = new stdClass();
$sObject1->type = 'Contact';
$sObject1->Id = $id;
$sObject1->fields['MailingCity'] = 'New York';
$sObject1->fields['MailingState'] = 'NY';
try
{
$updateResponse = $client->update( array( $sObject1 ) );
}
catch( Exception $exception )
{
// Do something
}
Обратите внимание, что идентификаторсвойство $ sObject, а не значение в массиве полей.Также нет необходимости указывать «Контакт» в вашем вызове обновления, так как он установлен в свойстве типа $ sObject.