Bonjour mz-0180,
L'erreur "java.lang.IllegalStateException: Not a JSON Array" suggère que la méthode attend un tableau JSON, mais qu'à la place, un objet JSON est fourni.
Cela pourrait être dû à un changement dans le format de réponse attendu dans la version la plus récente du SDK. Le SDK Microsoft Graph a subi des modifications importantes, notamment des mises à jour des espaces de noms, des méthodes d'authentification et des générateurs de requêtes. Il est important de vous assurer que votre code est aligné sur ces changements.
Vous trouverez plus d'informations dans les deux articles suivant:
- Microsoft Graph .NET SDK v5 changelog and upgrade guide
- Microsoft Graph .NET SDK v5 is now generally available
Voici une version révisée de votre code avec le SDK mis à jour:
public WrapperVO<Object> generateTeamsUrl(MultipartFormDataInput dates) throws BusinessException, TechnicalException {
WrapperVO<Object> wVO = new WrapperVO<Object>();
String[] scopes = new String[] { "https://graph.microsoft.com/.default" };
String clientSecret = //retrieved from database
String meetingStart = null;
String meetingEnd = null;
try {
meetingStart = dates.getFormDataPart("meetingStart", String.class, null);
meetingEnd = dates.getFormDataPart("meetingEnd", String.class, null);
} catch (IOException e) {
e.printStackTrace();
}
final ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
.clientId("")
.clientSecret(clientSecret)
.tenantId("")
.build();
GraphServiceClient graphClient = GraphServiceClient.builder()
.authenticationProvider(new TokenCredentialAuthProvider(scopes, clientSecretCredential))
.buildClient();
OnlineMeeting onlineMeeting = new OnlineMeeting();
onlineMeeting.setStartDateTime(OffsetDateTime.parse(meetingStart));
onlineMeeting.setEndDateTime(OffsetDateTime.parse(meetingEnd));
onlineMeeting.setSubject("Meeting");
// Use try-catch to handle the potential IllegalStateException
try {
OnlineMeeting createdMeeting = graphClient.users().byUserId("").onlineMeetings()
.buildRequest()
.post(onlineMeeting);
System.out.println("OnlineMeeting URL: " + createdMeeting.joinWebUrl);
Response resp = Response.ok(createdMeeting.joinWebUrl).build();
return new WrapperVO<>(wVO.addData(resp), new MetaDataVO());
} catch (IllegalStateException e) {
e.printStackTrace();
// Handle the error or rethrow it
throw e;
}
}
A bientôt
Alexis
Si cette réponse a répondu à votre question, veuillez « Accepter comme réponse » et voter en utilisant « Pouce levé » afin que la pertinence de ce message s’améliore lorsque quelqu’un dans la communauté recherche une requête similaire.