web-dev-qa-db-de.com

Zugriff auf eine Sharepoint-Site über die REST API in Python?

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.

15

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'))
27
TomL

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.

1
fokas

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")
0
Mihir Thakkar

Sie können auch das Modul sharepoint von PyPI verwenden, das selbst als "Modul und Befehlszeilenhilfsprogramm zum Abrufen von Daten aus SharePoint" beschrieben wird.

0
ndemou