ローカルVMのSharePoint 2013に次のサイトがあります。
http://win-5a8pp4v402g/sharepoint_test/site_1/
ブラウザからこれにアクセスすると、ユーザー名とパスワードの入力を求められ、正常に機能します。ただし、PythonでREST APIを使用して同じことをしようとしています。要求ライブラリを使用していますが、これは私が行ったことです。
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/
SharePointサイトが異なる認証スキームを使用している可能性があります。これを確認するには、FirebugまたはChrome Developer Toolsのネットワークトラフィックを調べます。
幸い、要求ライブラリは多くの認証オプションをサポートしています。 http://docs.python-requests.org/en/latest/user/authentication/
たとえば、アクセスする必要があるネットワークの1つがNTLM認証を使用しています。 requests-ntml プラグインをインストールした後、次のようなコードを使用してサイトにアクセスできました。
import requests
from requests_ntlm import HttpNtlmAuth
requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('DOMAIN\\USERNAME','PASSWORD'))
以下にSharePoint 2016の例を示しますREST API呼び出し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")
他の読者がpythonを使用してPythonリストをクエリし、NTLM認証を使用して直接HTTPクエリを検索している場合は、こちらをご覧ください。 http:// blog。 carg.io/listing-and-updating-a-sharepoint-list-in-python/
Sharepointリストを照会および更新するための認証の完全な例があります。
また、PyPIの sharepoint モジュールを使用することもできます。これは、「SharePointからデータを取得するためのモジュールおよびコマンドラインユーティリティ」と自称しています。