I'm using Python zeep to use SOAP to interact with Salesforce's Metadata API.
I'm attempting to start with the simplest thing possible, just log in and read a metadata object.
from zeep import Client as zClient client = zClient('sf_config/sf_metadata_40.xml') // readMetadata method exists, prints <zeep.client.OperationProxy object at ...> print client.service.readMetadata // errors because login method does not exist print client.service.login
I know the zeep client reads the XML because it correctly knows that
readMetadata exists, but I'm confused about how I am supposed to log in with my Salesforce username and password. I expected a
login method to exist.
Additionally, I tried adding username and password to the construction of the
from zeep.wsse.username import UsernameToken client = zClient('sf_config/sf_metadata_40.xml', wsse=UsernameToken('email@example.com', 'scary_secretPassW*rd'))
but it was unsuccessful, in that, executing the
readMetadata method caused this error:
Fault: UNKNOWN_EXCEPTION: Destination URL not reset. The URL returned from login must be set in the SforceService
(The Java examples in Salesforce docs use a
connection object that I'm not really sure what the Python zeep equivalent would be, so I don't have an example to go off of.)
That error brings this to mind, from the docs:
Retrieve the metadataServerUrl from the LoginResult returned by your SOAP API login() call.
But I'm not sure what the
login() call is, since such a method does not exist on the