2013-09-15 6 views

ответ

3

Salesforce апи построен с использованием стандарта W3C под названием SOAP, так, а не специальную библиотеку Salesforce, вы можете попробовать обжигающе ваши WSDL-файлы в общую библиотеку SOAP. SUDS является зрелой, активно поддерживаются библиотекой, и я только что сделал успешный Salesforce метаданных апите вызов с ней, и что выглядит как

from suds.client import Client 


_SF_PRODUCT_VERSION = (0, 0, 0) 
USER_AGENT_STR = '/'.join(['Salesforce', 
          _SF_PRODUCT_NAME, 
          '.'.join(str(x) for x in _SF_PRODUCT_VERSION)]) 

def login(username, password, token): 
     WSDL_URL = 'file://' + path.abspath(_ENTERPRISE_WSDL_FILE) 
    suds_client = Client(WSDL_URL) 
    suds_client.set_options(headers = { 
      'User-Agent': USER_AGENT_STR, 
      }) 
    login_result = suds_client.service.login(username, password+token) 
    return login_result 

login_result = login(SF_USERNAME, SF_PASSWORD, SF_TOKEN) 
suds_client = Client(url=METADATA_WSDL_URL, location=login_result.metadataServerUrl) 
session_header = suds_client.factory.create('SessionHeader') 
session_header.sessionId = login_result['sessionId'] 
suds_client.set_options(
    headers = { 
     'User-Agent': USER_AGENT_STR, 
     }, 
    soapheaders = { 
     'SessionHeader': session_header, 
     }) 
describe_metadata_result = suds_client.service.describeMetadata(29.0) 
print "describe metadata result" 
print describe_metadata_result 

(некоторые имена были изменены, чтобы защитить невинные.)

, так что это не так просто, как могло бы быть, но с небольшим дополнительным временем для создания поверх этой очень зрелой библиотеки SOAP она, вероятно, будет более надежной, чем некоторые специализированные библиотеки Salesforce. с одной стороны, добавление

logging.basicConfig(level=logging.INFO) 
logging.getLogger('suds.client').setLevel(logging.DEBUG) 

перед вызовом апи будет печатать запросы XML и ответы, как они посылают по проводам, которые могут быть очень полезны.

есть специальная библиотека под названием python-salesforce-toolkit, построенная на SUDS, но ни она, ни версия SUDS, на которой она построена, больше не поддерживаются.

Смежные вопросы