从Python连接到Microsoft Dynamics CRM 2011 SDK
有没有人成功用Python连接到2011版的Microsoft Dynamics CRM 2011的接口?我已经安装了SUDS,可以获取WSDL文件,但服务调用返回的是400错误,意思是请求有问题。我想这肯定是因为我没有进行身份验证,但我不太清楚如何用原始的SOAP进行身份验证。我知道有Girish的代码示例,但我对SOAP不太熟悉,没法深入了解。
我看到这个问题在一年前也有人问过,但那个问题似乎是关于NTLM的。而我这边想用的是WS-Trust。
这是我写的代码:
from suds.client import Client
import logging
logging.basicConfig(level=logging.INFO)
url = 'https://dev.crm.dynamics.com/XRMServices/2011/Discovery.svc?wsdl'
client = Client(url)
req = client.factory.create('ns3:RetrieveOrganizationsRequest')
accessTypes = client.factory.create('ns3:AccessType')
orgRel = client.factory.create('ns3:OrganizationRelease')
req.AccessType = accessTypes.Default
req.Release = orgRel.Current
headers = dict()
headers['Content-Type'] = 'application/soap+xml'
client.set_options(headers=headers)
resp = client.service.Execute(req)
1 个回答
0
如果不一定要使用SOAP,那可以考虑一下这个REST风格的Odata服务。我对Python不是很精通,不过你可以在浏览器里发送GET请求,然后用调试工具查看浏览器发送了什么头信息,接着在你的Python代码里模仿这些操作。你还可以通过修改Content-Type头来选择服务返回的数据格式(JSON或XML)。