Je veux récupérer la liste de tous les dossiers sur SharePoint pour les afficher sur mon application. Je me suis authentifié au sharepoint.
try {
// AccessToken url
String wsURL = "https://accounts.accesscontrol.windows.net/" + shp_tenantId + "/tokens/OAuth/2";
URL url = new URL(wsURL);
URLConnection connection = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) connection;
// Set header
httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
httpConn.setRequestProperty("Content-Length", "<calculated when request is sent>");
httpConn.setRequestProperty("Host", "<calculated when request is sent>");
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
httpConn.setRequestMethod("POST");
// Prepare RequestData
String jsonParam = "grant_type=client_credentials"
+ "&client_id=" + shp_clientId + "@" + shp_tenantId
+ "&client_secret=" + shp_clientSecret
+ "&resource=00000003-0000-0ff1-ce00-000000000000/"+domaine_prefix+".sharepoint.com@" + shp_tenantId;
//Here, <org_Shp_Host> is "Origanisations's Sharepoint Host"
// Send Request
DataOutputStream wr = new DataOutputStream(httpConn.getOutputStream());
wr.writeBytes(jsonParam);
wr.flush();
wr.close();
// Read the response.
InputStreamReader isr = null;
if (httpConn.getResponseCode() == 200) {
isr = new InputStreamReader(httpConn.getInputStream());
} else {
isr = new InputStreamReader(httpConn.getErrorStream());
}
BufferedReader in = new BufferedReader(isr);
String responseString = "";
String outputString = "";
// Write response to a String.
while ((responseString = in.readLine()) != null) {
outputString = outputString + responseString;
System.out.println(outputString);
}
// Extracting accessToken from string, here response (outputString)is a Json format string
if (outputString.indexOf("access_token\":\"") > -1) {
//if (outputString.indexOf("access_token\":\"") > -1) {
int i1 = outputString.indexOf("access_token\":\"");
String str1 = outputString.substring(i1 + 15);
int i2 = str1.indexOf("\"}");
accessToken = str1.substring(0, i2);
}
} catch (Exception e) {
accessToken = "Error: " + e.getMessage();
}
J'ai aussi pu récupérer un fichier avec le chemin absolu.
Voici le résultat de l'API sur postman
Code
try {
//Frame SharePoint siteURL
String siteURL = "https://"+domaine_prefix+".sharepoint.com/";
//Frame SharePoint URL to retrieve all the files in a folder
String wsUrl = siteURL + wsUrl2;
//Create HttpURLConnection
URL url = new URL(wsUrl);
URLConnection connection = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) connection;
//Set Header
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer " + accessToken);
httpConn.setRequestProperty("Accept", "application/json;odata=verbose"); //To get response in JSON
httpConn.setRequestProperty("Content-Type", "application/json;odata=verbose"); //To get response in JSON
//httpConn.setRequestProperty("accept", "application/atom+xml"); //To get response in XML
//Read the response
String httpResponseStr = "";
InputStreamReader isr = null;
if (httpConn.getResponseCode() == 200) {
isr = new InputStreamReader(httpConn.getInputStream());
} else {
isr = new InputStreamReader(httpConn.getErrorStream());
}
BufferedReader in = new BufferedReader(isr);
String strLine = "";
while ((strLine = in.readLine()) != null) {
httpResponseStr = httpResponseStr + strLine;
}
System.out.println(httpResponseStr);
JSONObject obj = new JSONObject(httpResponseStr);
String pageName = obj.getJSONObject("d").getString("Name");
} catch (Exception e) {
System.out.println("Error while reading file: " + e.getMessage());
}
Ensuite je veux récupérer tous les dossiers et boucler par la suite. Et c'est là, le souci. Au niveau du "result", nous avons un tableau et non un string
Json sur postman
Code
try {
//Frame SharePoint siteURL
String siteURL = "https://"+domaine_prefix+".sharepoint.com/";
//Frame SharePoint URL to retrieve all the files in a folder
String wsUrl = siteURL + wsUrl2;
//Create HttpURLConnection
URL url = new URL(wsUrl);
URLConnection connection = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) connection;
//Set Header
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer " + accessToken);
httpConn.setRequestProperty("Accept", "application/json;odata=verbose"); //To get response in JSON
httpConn.setRequestProperty("Content-Type", "application/json;odata=verbose"); //To get response in JSON
//httpConn.setRequestProperty("accept", "application/atom+xml"); //To get response in XML
//Read the response
String httpResponseStr = "";
InputStreamReader isr = null;
if (httpConn.getResponseCode() == 200) {
isr = new InputStreamReader(httpConn.getInputStream());
} else {
isr = new InputStreamReader(httpConn.getErrorStream());
}
BufferedReader in = new BufferedReader(isr);
String strLine = "";
while ((strLine = in.readLine()) != null) {
httpResponseStr = httpResponseStr + strLine;
}
JSONObject obj = new JSONObject(httpResponseStr);
String pageName = obj.getJSONObject("d").getString("result");
JSONArray arr = obj.getJSONArray(pageName);
for (int i = 0; i < arr.length(); i++) {
String post_id = arr.getJSONObject(i).getString("results");
System.out.println(post_id);
}
} catch (Exception e) {
System.out.println("Error while reading file: " + e.getMessage());
}
Erreur
Error while reading file: JSONObject["result"] not found.
Je trouve l'erreur logique, mais je ne sais pas comment resoudre
- Edité par KOFFI KRAH LANDRY 9 août 2022 à 18:41:15
Le génie c'est 99% de transpiration et 1 % de chance.
bah déjà, le nom est results avec un s et pas result au singulier, donc l'erreur est juste en ligne 35.
Après, comme ce sera un tableau, bah il faut le parcourir comme tel, avec un indice pour récupérer/accéder aux éléments de ce tableau
Consommer API Rest de SharePoint
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le génie c'est 99% de transpiration et 1 % de chance.