Ich habe die folgende Site in SharePoint 2013 in meiner lokalen VM:
http://win-5a8pp4v402g/sharepoint_test/site_1/
Wenn ich darauf über den Browser zugreife, werden Sie zur Eingabe des Benutzernamens und des Kennworts aufgefordert und funktionieren dann einwandfrei. Ich versuche jedoch dasselbe mit der API REST in Python zu tun. Ich benutze die Anforderungsbibliothek, und das habe ich getan:
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
Ich bekomme jedoch eine 401. Ich verstehe nicht. Was vermisse ich?
Hinweis: Ich habe diesen Artikel http://tech.bool.se/using-python-to-request-data-from-sharepoint-via-rest/ befolgt.
Möglicherweise verwendet Ihre SharePoint-Website ein anderes Authentifizierungsschema. Sie können dies überprüfen, indem Sie den Netzwerkverkehr in Firebug oder den Chrome Developer Tools überprüfen.
Glücklicherweise unterstützt die Anforderungsbibliothek viele Authentifizierungsoptionen: http://docs.python-requests.org/de/latest/user/authentication/
Beispielsweise verwendet eines der Netzwerke, auf die ich zugreifen wollte, die NTLM-Authentifizierung. Nach der Installation des Plugins request-ntml konnte ich auf die Site mit ähnlichem Code zugreifen:
import requests
from requests_ntlm import HttpNtlmAuth
requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('DOMAIN\\USERNAME','PASSWORD'))
Wenn andere Leser auch Python-Listen mit Python- und direkt HTTP-Abfragen abfragen und NTLM-Authentifizierung verwenden, sollten Sie hier nachsehen: http://blog.carg.io/listing-and-updating-a -sharepoint-list-in-python/
Sie finden ein vollständiges Beispiel von der Authentifizierung, um Sharepoint-Listen abzufragen und zu aktualisieren.
Hier ein Beispiel eines SharePoint 2016 REST - API-Aufrufs von Python zum Erstellen einer Website.
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")
Sie können auch das Modul sharepoint von PyPI verwenden, das selbst als "Modul und Befehlszeilenhilfsprogramm zum Abrufen von Daten aus SharePoint" beschrieben wird.