2017-10-30 4 views
1

Ich versuche, Elemente aus einer Liste in Office 365 SharePoint aus einer systemeigenen Java-App aufzulisten.Wie bekomme ich eine MS Graph Anfrage mit Zugangscode?

Ich verwende veraltet office-365-java-sdk zu authentifizieren und ein Zugriffs-Token zu erhalten. Ja, dieses SDK ist veraltet, aber die Authentifizierung funktioniert weiterhin. Also, ich habe ein Zugriffs-Token.

Also, nächste Schritt ist GET Anfrage machen. In Graph Explorer fein diese URL funktioniert:

/v1.0/sites/root/lists/{site-id}/items 

I Dokumentation folgte dem Wunsch zu bauen, und ich habe einen Header mit Authentifizierung hinzufügen Token so ist dies mein Code:

StringBuilder result = new StringBuilder(); 
URL url = new URL("https://graph.microsoft.com/v1.0/sites/root/lists/{0a506dcb-ecbc-40ed-bf2c-5912e78e3ca8}/items"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setRequestMethod("GET"); 
conn.setRequestProperty("Authorization", "Bearer " + access_token); 
conn.setRequestProperty("Content-type", "application/json"); 
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
String line; 
while ((line = rd.readLine()) != null) 
{ 
    result.append(line); 
} 
rd.close(); 
System.out.println(result.toString()); 

Authentifizierung funktioniert, weil Wenn der Zugriffstokenkopf nicht hinzugefügt wird, wird ein Statusfehlercode von 401 Required authentication information is either missing or not valid for the resource zurückgegeben. Aber mit einem Zugriffscode wird der Fehlercode 400 Cannot process the request because it is malformed or incorrect zurückgegeben.

Ich bin mit diesem fest, ich lese die Dokumentation immer wieder und nach Überprüfung der URL ist richtig mit Graph Explorer, ich weiß nicht, ob dies nicht der richtige Weg ist, Header oder was ....

+0

Änderung der Linie 'conn.setRequestProperty ("Content-Type", "application/json");' auf 'conn.setRequestProperty ("akzeptieren", "application/json; odata = verbose"); 'und überprüfen Sie –

+0

Sie haben Recht! Schlüssel der Kopfzeile sollte "akzeptieren" sein. Allerdings musste ich "odata = verbose" löschen, da auch eine schlechte Anfrage zurückgegeben wurde. Ich habe die Anfrage auf Postman gestellt und "application/json; odata = ver bose" wird nicht unterstützt. Bitte geben Sie den Kommentar als Antwort und ich werde Sie verärgern. – borja

Antwort

1

Die richtige zu übergebende Kopfzeile ist Accept: application/json.

So ersetzen Sie die conn.setRequestProperty("Content-type","application/json"); mit

conn.setRequestProperty("Accept","application/json");

Verwandte Themen