【问题标题】:How can I connect to a Microsoft Dynamics CRM server using Python?如何使用 Python 连接到 Microsoft Dynamics CRM 服务器?
【发布时间】:2011-03-18 16:46:42
【问题描述】:

Microsoft Dynamics CRM 服务使用 NTLM 身份验证,这使得使用 suds 从 python 进程连接到它有点复杂。我正在寻找一个代码示例:

  1. 发送和接收来自RetrieveAttributeRequest 的响应
  2. 发送和接收来自Execute 请求的响应。

这必须使用 Python 2.6 或 Python 2.7,而不是 Python 3。我已经有一个使用 curl 来执行此操作的工作实现,但它在最好的时候是不稳定的,并且作为我在这个工具中的其他一些工作的一部分我想清理它并使其使用 python/suds 运行。

【问题讨论】:

    标签: python web-services dynamics-crm ntlm dynamics-crm-2011


    【解决方案1】:

    我知道这有点晚了,但希望它会对某人有所帮助。

    NTLM 身份验证已添加到 version 0.3.8 中的 suds 中。

    from suds.transport.https import WindowsHttpAuthenticated
    from suds.client import Client
    
    url = 'http://crmurl/XRMServices/2011/Discovery.svc?wsdl'
    ntlm = WindowsHttpAuthenticated(username='DOMAIN\username', password='password')
    client = Client(url, transport=ntlm)
    

    【讨论】:

    • 5 年后,suds 已被废弃。但是 pip install suds-community 似乎至少可以安装,&这里是 github 页面:github.com/suds-community/suds
    【解决方案2】:

    我不知道这是否对你有帮助,但我使用了PycURL 来通过 NTLM 代理。

    这是一个代码sn-p:

        c = Curl()
    
        c.setopt(URL, 'http://www.somesite.com')
        c.setopt(FOLLOWLOCATION, 1)           # follow redirects
        c.setopt(MAXREDIRS, 5)              # max redirects
        c.setopt(PROXY, 'proxy.somesite.com')
        c.setopt(PROXYUSERPWD, 'DOMAIN/USER:PASSWORD')
        c.setopt(PROXYAUTH, HTTPAUTH_NTLM)    # use NTLM
    
        c.perform()
    

    这是Curl 对象上的documentation

    【讨论】:

    • 现在我们使用 curl 来完成这里的工作,但这意味着我们必须在每次调用时处理 XML 的序列化和反序列化,并且手动构建 SOAP 消息并不有趣。我宁愿有一个将其抽象出来的解决方案,而不必自己手动编写。
    猜你喜欢
    • 2010-11-10
    • 2011-12-17
    • 2016-12-03
    • 1970-01-01
    • 2017-10-19
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多