2017-02-08 2 views
0

Ich versuche mit Python urllib2 auf die Dateien in einem SharePoint 2013-Ordner mithilfe der SharePoint-REST-API zuzugreifen. https://msdn.microsoft.com/en-us/library/office/dn450841.aspxJSON-Objekt von Python abrufen urllib2-Anforderung

Ich kann nicht scheinen, die Antwort als ein Json-Objekt zu erhalten, auch nach dem Hinzufügen des Headers "akzeptieren": 'application/json; odata = verbose'.

Ich benutze Python 2.7.5, urllib2 und kann die Python Anfragen Modul aufgrund von Einschränkungen und Einschränkungen der Genehmigung nicht verwenden.

Wenn ich die .../_ api/web/GetFolderByServerRelativeUrl ('/ Dateiname')/Files url verwende, bekomme ich einen AttributeError ('' str 'Objekt hat kein Attribut' read '"). Wenn ich nur die normale URL zu der Site verwende, bekomme ich einen Fehler, dass es kein 'JSON-Objekt' in der Antwort gibt.

Ich weiß nicht, was ich falsch mache und warum ich von dieser Anfrage keinen json bekommen kann?

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'DOMAIN\USER' 
     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) 

Antwort

0

Was die Anforderung tatsächlich zurückgibt, ist eine Zeichenfolgendarstellung des Json-Objekts.

Sie können die json.loads()-Funktion anstelle der json.load()-Funktion verwenden, um die Zeichenfolge in ein Json-Objekt zu konvertieren.

+0

Ich habe es geändert, um die 'json.loads()' -Funktion zu verwenden, und ich bekomme ValueError ('Kein JSON-Objekt könnte decodiert werden') Ich verstehe, dass SharePoint-Antwort standardmäßig auf XML, aber ich dachte, indem Sie den Header der Anfrage hinzufügen es würde json zurück geben? – bighill

+0

Haben Sie versucht, das Ergebnis von 'response.read()' auszudrucken, um zu sehen, wie es aussieht? –

+0

Ja, es ist die HTML-Zeichenfolge – bighill