从 Python urllib2 请求中获取 JSON 对象



我正在尝试使用 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 对象。

最新更新