J'ai le site suivant dans SharePoint 2013 sur ma machine virtuelle locale:
http://win-5a8pp4v402g/sharepoint_test/site_1/
Lorsque j'accède à cela à partir du navigateur, il me demande le nom d'utilisateur et le mot de passe, puis fonctionne correctement. Cependant, j'essaie de faire la même chose en utilisant l'API REST en Python. J'utilise la bibliothèque de requêtes, et voici ce que j'ai fait:
import requests
from requests.auth import HTTPBasicAuth
USERNAME = "Administrator"
PASSWORD = "password"
response = requests.get("http://win-5a8pp4v402g/sharepoint_test/site_1/", auth=HTTPBasicAuth(USERNAME, PASSWORD))
print response.status_code
Cependant, je reçois un 401. Je ne comprends pas. Qu'est-ce que je rate?
Note: J'ai suivi cet article http://tech.bool.se/using-python-to-request-data-from-sharepoint-via-rest/
Il est possible que votre site SharePoint utilise un schéma d'authentification différent. Vous pouvez vérifier cela en inspectant le trafic réseau dans Firebug ou dans les outils de développement Chrome.
Heureusement, la bibliothèque de requêtes prend en charge de nombreuses options d'authentification: http://docs.python-requests.org/en/latest/user/authentication/
Par exemple, l'un des réseaux auxquels j'avais besoin d'accéder utilise l'authentification NTLM. Après avoir installé le plug-in request-ntml , j'ai pu accéder au site à l'aide d'un code similaire à celui-ci:
import requests
from requests_ntlm import HttpNtlmAuth
requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('DOMAIN\\USERNAME','PASSWORD'))
Si d'autres lecteurs envisagent également d'interroger des listes Python à l'aide de Python et directement des requêtes HTTP, à l'aide de l'authentification NTLM, je vous suggère de consulter la page suivante: http://blog.carg.io/listing-and-updating-a -sharepoint-list-in-python/
Vous trouverez un exemple complet d'authentification pour interroger et mettre à jour les listes Sharepoint.
Voici un exemple d'appel à l'API SharePoint 2016 REST de Python pour créer un site.
import requests,json,urllib
from requests_ntlm import HttpNtlmAuth
root_url = "https://sharepoint.mycompany.com"
headers = {'accept': "application/json;odata=verbose","content-type": "application/json;odata=verbose"}
##"DOMAIN\username",password
auth = HttpNtlmAuth("MYCOMPANY"+"\\"+"UserName",'Password')
def getToken():
contextinfo_api = root_url+"/_api/contextinfo"
response = requests.post(contextinfo_api, auth=auth,headers=headers)
response = json.loads(response.text)
digest_value = response['d']['GetContextWebInformation']['FormDigestValue']
return digest_value
def createSite(title,url,desc):
create_api = root_url+"/_api/web/webinfos/add"
payload = {'parameters': {
'__metadata': {'type': 'SP.WebInfoCreationInformation' },
'Url': url,
'Title': title,
'Description': desc,
'Language':1033,
'WebTemplate':'STS#0',
'UseUniquePermissions':True}
}
response = requests.post(create_api, auth=auth,headers=headers,data=json.dumps(payload))
return json.loads(response.text)
headers['X-RequestDigest']=getToken()
print createSite("Human Resources","hr","Sample Description")
Vous pouvez également utiliser le module sharepoint de PyPI, décrit comme "Module et utilitaire de ligne de commande pour extraire des données de SharePoint"