2008-10-20 16 views

Répondre

10

Je pense que, puisque cette question a été répondu à la bibliothèque SUDS a été mis à jour pour prendre soin de lui-même l'authentification nécessaire Après avoir sauté par divers cerceaux, je trouve cela faire l'astuce:


from suds import WebFault 
from suds.client import * 
from suds.transport.https import WindowsHttpAuthenticated 


user = r'SERVER\user' 
password = "yourpassword" 
url = "http://sharepointserver/_vti_bin/SiteData.asmx?WSDL" 


ntlm = WindowsHttpAuthenticated(username = user, password = password) 
client = Client(url, transport=ntlm) 

+0

Malheureusement, il ne semble pas que ça soit bien avec python3 et il est possible d'y ajouter csb-jerko mais nécessite la bibliothèque python-ntlm qui ne s'installe pas sous Windows. – Basic

3

SharePoint expose plusieurs services Web que vous pouvez utiliser pour interroger et mettre à jour des données. Je ne suis pas sûr de ce que sont les toolkits de service Web pour Python, mais ils devraient être en mesure de créer des proxys pour ces services sans aucun problème.

Cet article devrait vous fournir suffisamment d'informations pour commencer.

http://www.developer.com/tech/article.php/3104621

+0

Malheureusement, python ne joue pas bien avec l'authentification NTLM (! et encore moins avec Kerberos) de sorte que la partie SOAP est facile, mais l'auth est problématique – Basic

4

SOAP avec Python est assez facile. Here's a tutorial de plonger dans Python.

+1

Ceci est maintenant très à jour et la SOAPpy La bibliothèque qu'il utilise est obsolète. – Basic

9

Pour obtenir le wsdl:

import sys 

# we use suds -> https://fedorahosted.org/suds 
from suds import WebFault 
from suds.client import * 
import urllib2 

# my 2 url conf 
# url_sharepoint,url_NTLM_authproxy 
import myconfig as my 

# build url 
wsdl = '_vti_bin/SiteData.asmx?WSDL' 
url = '/'.join([my.url_sharepoint,wsdl]) 


# we need a NTLM_auth_Proxy -> http://ntlmaps.sourceforge.net/ 
# follow instruction and get proxy running 
proxy_handler = urllib2.ProxyHandler({'http': my.url_NTLM_authproxy }) 
opener = urllib2.build_opener(proxy_handler) 

client = SoapClient(url, {'opener' : opener}) 

print client.wsdl 
principal problème (moyenne)

: le sharepoint-serveur utilise un NTLM-Auth [:-(] donc je devais utiliser le NTLM-Auth-Proxy

à Rob et Enzondio:. MERCI pour vos conseils