2010-07-20 4 views
2

Служба Microsoft Dynamics CRM использует аутентификацию NTLM, что делает подключение к ней из процесса python с использованием suds несколько сложным. Я ищу для образца кода, который будет:Как подключиться к серверу Microsoft Dynamics CRM с помощью Python?

  1. Отправить и получить ответ от RetrieveAttributeRequest
  2. Отправить и получить ответ от Execute запроса.

Это необходимо использовать Python 2.6 или Python 2.7, не Python 3. У меня уже есть рабочая реализация, которая использует завиток, чтобы сделать это, но это нестабильно лучшие времена, так и в рамках какой-либо другой работы, которую я в этом инструменте я хотел бы очистить его и запустить его с помощью python/suds.

ответ

0

Я не знаю, поможет ли это вам, но я использовал PycURL, чтобы пройти через прокси-сервер NTLM.

Вот фрагмент кода:

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() 

Вот documentation на Curl объекта.

+0

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

5

Я знаю, что это немного поздно, но, надеюсь, это поможет кому-то.

Подлинность NTLM была добавлена ​​к пеной в version 0.3.8.

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)