Как получить доступ к сайту sharepoint через REST API в Python?
У меня есть следующий сайт в SharePoint 2013 в моей локальной VM:
http://win-5a8pp4v402g/sharepoint_test/site_1/
Когда я получаю доступ к этому из браузера, он запрашивает у меня имя пользователя и пароль, а затем работает нормально. Однако я пытаюсь сделать то же самое с помощью REST API в Python. Я использую библиотеку запросов, и это то, что я сделал:
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
Однако я получаю 401. Я не понимаю. Что мне не хватает?
Примечание. Я следил за этой статьей http://tech.bool.se/using-python-to-request-data-from-sharepoint-via-rest/
Ответы
Ответ 1
Возможно, ваш сайт SharePoint использует другую схему аутентификации. Вы можете проверить это, проверив сетевой трафик в Firebug или инструментах разработчика Chrome.
К счастью, библиотека запросов поддерживает множество параметров проверки подлинности: http://docs.python-requests.org/en/latest/user/authentication/
Например, одна из сетей, к которым я нуждался, использует NTLM-аутентификацию. После установки плагина request-ntml я смог получить доступ к сайту с помощью кода, подобного этому:
import requests
from requests_ntlm import HttpNtlmAuth
requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('DOMAIN\\USERNAME','PASSWORD'))
Ответ 2
Если другие читатели также изучают запросы на списки python с использованием Python и напрямую HTTP-запросов, используя проверку подлинности NTLM, я предлагаю вам посмотреть здесь:
http://blog.carg.io/listing-and-updating-a-sharepoint-list-in-python/
Вы найдете полный пример аутентификации, чтобы запросить и обновить списки SharePoint.
Ответ 3
Вы также можете использовать модуль sharepoint из PyPI, который сам называется "Модуль и утилита командной строки для получения данных из SharePoint" "
Ответ 4
Вот примеры вызова API REST SharePoint 2016 из Python для создания сайта.
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")
Ответ 5
Ответ 401 - это ошибка аутентификация...
Это оставляет одну из трех ваших переменных неправильной: url, user, pass. Запросы Документы проверки подлинности
Ваш URL выглядит неполным.