PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Attente infini requête http POST à l'api Graph Microsoft
Attente infini requête http POST à l'api Graph Microsoft
Iniciado por cora, abr., 18 2024 10:45 AM - 1 resposta
Membro registado
10 mensagems
Publicado em abril, 18 2024 - 10:45 AM
Bonjour,

J'essaye récemment d'utiliser L’API Graph de Microsoft pour gérer un calendrier Outlook, j'arrive a me connecter même si j'ai des problèmes pour refresh le token mais ce n'est pas le sujet de ce post.

Lorsque j'essaye d'effectuer des requêtes POST ou PATCH, l'application se freeze et bloque à l'envoie. J'ai essayer les mêmes requêtes sur Postman elles fonctionnent bien. Sur windev mes requêtes GET fonctionnent donc selon moi le problème vient du Contenu de ma requête mais je n'arrive pas à voir ce qui cause ce bug.

Le code d'une requête pour ajouter une pièce jointe à un RDV existant :

clOAuthMicrosoft est une OAuthOffice365
clOAuthMicrosoft.Connect()
ReqPostGraph est une httpRequest
ResPostGrap est une httpResponse

// Param de ma Req
ReqPostGraph..URL = " https://graph.microsoft.com/v1.0/me/events/idRDV/attachments"
ReqPostGraph..Méthode = httpPost
ReqPostGraph..AuthToken = clOAuthMicrosoft.m_TokenSession
ReqPostGraph..ContentType = "application/json"
ReqPostGraph..Entête["Authorization"] = "Bearer "+clOAuthMicrosoft.m_TokenSession.Valeur
ReqPostGraph..DuréeNonRéponse = 10000

sContenu est une JSON = [
{
"@odata.type": "#microsoft.graph.fileAttachment",
}
]
sContenu.name = "testWindev.txt"
sContenu.contentType = "text/plain"
sContenu.contentBytes = "SGVsbG8gV29ybGQh"

ReqPostGraph..Contenu = sContenu

Trace("JSON à envoyer : ", sContenu)

// Attente infini après l'envoie
ResPostGrap = HTTPEnvoie(ReqPostGraph)

SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))
SINON
Trace(ResPostGrap.CodeEtat, ResPostGrap.Contenu)
FIN


La Trace du JSON à envoyer, le JSON est bon normalement :

JSON à envoyer : { "@odata.type":"#microsoft.graph.fileAttachment", "name":"testWindev.txt", "contentType":"text/plain", "contentBytes":"SGVsbG8gV29ybGQh" }
Membro registado
10 mensagems
Publicado em abril, 18 2024 - 4:20 PM
Du coup le "problème" était que lors de requête PATCH ou POST le fait de mettre en entête le Bearer Token cela faisait buguer la requête mais lorsque je l'enlève tout fonctionne. J'ai aucune idée de pourquoi cela bloque pour les requêtes autres que GET
La ligne qui ne faut pas mettre en POST, PATCH : ReqPostGraph..Entête["Authorization"] = "Bearer "+token, surement car ReqPostGraph..AuthToken = clOAuthMicrosoft.m_TokenSession le fait déjà à sa place

Code d'une requête fonctionnel pour l'ajout de pièce jointe à un RDV existant :

clOAuthMicrosoft est une OAuthOffice365
clOAuthMicrosoft.Connect()
ReqPostGraph est une restRequête
ResPostGrap est une restRéponse

// Param de ma Req
ReqPostGraph..URL = " https://graph.microsoft.com/v1.0/me/events/eventId/attachments"
ReqPostGraph..Méthode = httpPost
ReqPostGraph..AuthToken = clOAuthMicrosoft.m_TokenSession
ReqPostGraph..ContentType = "application/json"
ReqPostGraph..DuréeNonRéponse = 10000

sContenu est une JSON = [
{
"@odata.type": "#microsoft.graph.fileAttachment",
}
]
sContenu.Name = "testWindev.txt"
sContenu.ContentType = "text/plain"
sContenu.contentBytes = "SGVsbG8gV29ybGQh"

ReqPostGraph..Contenu = sContenu
Trace("JSON à envoyer : ", sContenu)

ResPostGrap = RESTEnvoie(ReqPostGraph)

SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))
SINON
Trace(ResPostGrap.CodeEtat, ResPostGrap.Contenu)
FIN