我正在尝试使用 python urllib2 通过 SharePoint REST API 访问 SharePoint 2013 文件夹中的文件 https://msdn.microsoft.com/en-us/library/office/dn450841.aspx。
即使在添加标头"accept":'application/json;odata=verbose'之后,我似乎也无法将响应作为 json 对象。
我使用的是Python 2.7.5,urllib2,由于限制和权限限制,无法使用python请求模块。
如果我使用 .../_api/web/GetFolderByServerRelativeUrl('/File Name'(/Files url,我会得到一个 AttributeError("'str' 对象没有属性'read'"(。 如果我只使用站点的普通 url,则会收到一个错误,指出响应中没有"JSON 对象"。
我不知道我做错了什么,为什么我无法从这个请求中获得任何 json?
import sys
import urllib
import urllib2
import json
from ntlm import HTTPNtlmAuthHandler
try:
url = 'https://sharepointsite/subfolder/subfolder/subfolder/Forms/AllItems.aspx/_api/web/GetFolderByServerRelativeUrl(/Folder Name)/Files'
user = r'DOMAINUSER'
password = '*********'
req = urllib2.Request(url)
req.add_header('accept', 'application/json;odata=verbose')
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, password)
handler = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
response = urllib2.urlopen(req)
data_json = json.load(response.read())
except Exception as e:
print '{0}'.format(e)
请求实际返回的是 json 对象的字符串表示形式。
您可以使用 json.loads()
函数而不是 json.load()
函数将字符串转换为 json 对象。