I try to call retrieve in SOAP using PHP but I need to login before. For login, I have a token that I get from "https://test.salesforce.com/services/oauth2/token"
So, I try to pass this token in the header of my SOAP request
$wsdl = PUBLIC_PATH . '/wsdl-metadata.xml'; // le fichier wsdl $apiVersion = 44.0; $singlePackage = true; $members = 'ServiceSetting.' . $service; $name = 'customMetadata'; $params = new StdClass(); $params->retrieveRequest = new StdClass(); $params->retrieveRequest->apiVersion = $apiVersion; $params->retrieveRequest->singlePackage = $singlePackage; $params->retrieveRequest->unpackaged = new StdClass(); $params->retrieveRequest->unpackaged->version = $apiVersion; $params->retrieveRequest->unpackaged->type = new stdClass(); $params->retrieveRequest->unpackaged->type->members = $members; $params->retrieveRequest->unpackaged->type->name = $name; $option = [ 'trace' => TRUE, ]; // Namespaces $namespace = 'http://soap.sforce.com/2006/04/metadata'; $client = new SoapClient($wsdl, $option); $header = new SoapHeader($namespace, "SessionHeader", array ('sessionId' => $token)); $client->__setSoapHeaders($header); $serviceResult = $client->retrieve($params);
The Error is
UNKNOWN_EXCEPTION: Destination URL not reset. The URL returned from login must be set in the SforceService