PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → API REST Timeout
API REST Timeout
Débuté par DREAM-TECH (BE), 29 avr. 2025 16:15 - 11 réponses
Membre enregistré
94 messages
Posté le 29 avril 2025 - 16:15
Hello Devs,

Je souhaite convertir des PDF en PDF/A via convertapi.com

A l'exécution, je reçois un Timeout après 20-30 secondes :

sFile is string = Encode(fLoadBuffer("C:\Users\...\Desktop\....pdf"), encodeBASE64)

j is string = [
{
"Parameters": [
{
"Name": "File",
"FileValue": {
"Name": "my_file.pdf",
"Data": "%1"
}
}]
}
]

j = StringBuild(j,sFile)

myRequest is a httpRequest
myRequest..Method = httpPost
myRequest..URL = "https://eu-v2.convertapi.com/convert/pdf/to/pdfa"
myRequest..ContentType = "application/json"
myRequest..Content = j
myRequest..Header["Authorization"] = "Bearer secret_XXXXXXXXXXX"

myResponse is a httpResponse = RESTSend(myRequest)

Trace(myResponse..StatusCode) // Renvoi 0 (Timeout) après 20-30 secs.


Voici l'exemple donné par convertapi.com :





Quelqu'un a une idée de ce qui cloche dans mon code ? Peut-être l'authentification (l'entête) ?

Merci d'avance,
Membre enregistré
952 messages
Posté le 29 avril 2025 - 17:30
DREAM-TECH (BE) a écrit :
Hello Devs,

Je souhaite convertir des PDF en PDF/A via convertapi.com

A l'exécution, je reçois un Timeout après 20-30 secondes :

sFile is string = Encode(fLoadBuffer("C:\Users\...\Desktop\....pdf"), encodeBASE64)

j is string = [
{
"Parameters": [
{
"Name": "File",
"FileValue": {
"Name": "my_file.pdf",
"Data": "%1"
}
}]
}
]

j = StringBuild(j,sFile)

myRequest is a httpRequest
myRequest..Method = httpPost
myRequest..URL = "https://eu-v2.convertapi.com/convert/pdf/to/pdfa"
myRequest..ContentType = "application/json"
myRequest..Content = j
myRequest..Header["Authorization"] = "Bearer secret_XXXXXXXXXXX"

myResponse is a httpResponse = RESTSend(myRequest)

Trace(myResponse..StatusCode) // Renvoi 0 (Timeout) après 20-30 secs.


Voici l'exemple donné par convertapi.com :





Quelqu'un a une idée de ce qui cloche dans mon code ? Peut-être l'authentification (l'entête) ?

Merci d'avance,


Bonjour,

essayer d'augmenter la durée de non réponse, qui est à 20 sec par défaut de votre requête :

DuréeNonRéponse

https://doc.pcsoft.fr/fr-FR/?1000021481&name=restrequete_type_variable

Et ensuite, utilisez plutôt l'option 'encodeBase64SansRC' pour votre encodage ;)

Bon dèv
Membre enregistré
94 messages
Posté le 29 avril 2025 - 19:41
Merci pour la réponse,

Le problème persiste :/

J'ai adapté l'encodage conseillé et j'ai prolongé la durée du Timeout (à 5 min) :





Etrangement il s'arrête après une minute (il n'attend pas 5 minutes).

Je soupçonne l'authentification "Bearer" ?

Merci d'avance,
Membre enregistré
279 messages
Posté le 30 avril 2025 - 09:27
Bonjour,
Essayez de modifier la propriété "DuréeNonRéponse" comme le précise Chris
Cdt
Message modifié, 30 avril 2025 - 09:30
Membre enregistré
94 messages
Posté le 30 avril 2025 - 10:03
Bonjour Fabrice,

Oui, j'ai modifié la propriété "DuréeNonRéponse" c'est la même "ConnectionTimeout" que vous pouvez voir dans mon dernier code.

Je pense pas que le problème soit lié à cette propriété :/

Merci,
Membre enregistré
94 messages
Posté le 30 avril 2025 - 10:09
re,

J'ai également essayé : ..Timeout = 300000 puis en français pour enlever le doute : ..DuréeNonRéponse = 300000.

Même résultat, après une minute je reçois une réponse avec un statut 0 :(

Merci.
Membre enregistré
279 messages
Posté le 30 avril 2025 - 10:09
DuréeNonRéponse et TimeoutConnexion sont 2 propriétés différentes.

J'ai confondu la version française et la version anglaise :
"TimeoutConnexion" = "ConnexionTimeout"
"DuréeNonRéponse" = "Timeout"
Message modifié, 30 avril 2025 - 10:22
Membre enregistré
94 messages
Posté le 30 avril 2025 - 11:09
Oui,

Je me suis rendu compte de la même chose, d'ou mon second poste juste après avoir essayé DuréeNonRéponse/Timeout,

C'est étrange ce problème :/
Membre enregistré
279 messages
Posté le 30 avril 2025 - 11:45
Je me demande s'il ne manquerait pas l’entête "Content-Length" avec la taille du fichier encodé en Base64

Comme c'est indiqué ici : https://www.convertapi.com/blog/content-types

Du coup ça donnerait ça par ex :


Message modifié, 30 avril 2025 - 11:46
Membre enregistré
94 messages
Posté le 30 avril 2025 - 12:30
Une piste logique,

J'ai essayé mais sans succès :

myRequest..Header["Content-Length"] = Length(sFile)


Etrange, dans l'espace client je sélectionne un fichier et cela génère le code sans prendre en compte la longeur :





Galère... :D
Membre enregistré
279 messages
Posté le 30 avril 2025 - 14:10
Au temps pour moi, j'avais mal interprété la doc.
Le "Content-Length" doit indiquer la taille totale du JSON (après encapsulation des données au format Base64)

Essayes comme ceci :

jData is JSON
jData.Parameters[1].Name="File"
jData.Parameters[1].FileValue.Name="my_file.pdf"
jData.Parameters[1].FileValue.Data=Encode(fChargeBuffer("C:\Users\...\Desktop\....pdf"), encodeBASE64SansRC)

sContent is string = JSONVersChaîne(jData,psdMiseEnForme)

myRequest is a httpRequest
myRequest..Method = httpPost
myRequest..URL = "https://eu-v2.convertapi.com/convert/pdf/to/pdfa"
myRequest..ContentType = "application/json"
myRequest..Content = sContent
myRequest..Header["Authorization"] = "Bearer secret_XXXXXXXXXXX"
myRequest..Header["Content-Length"] = Taille(sContent)
myRequest..ConnectionTimeout = 60s
myRequest..Timeout = 60s

myResponse is a httpResponse = RESTSend(myRequest)

Trace(myResponse..StatusCode)
Membre enregistré
94 messages
Posté le 30 avril 2025 - 14:57
Enfin,

J'ai toujours un Timeout mais au même temps problème résolu :D

En réalité c'est le réseau de l'entreprise qui bloque la réponse ;( ;( ;( c'est pour ça toujours des Timeout.

J'ai essayé avec mon PC perso et ça fonctionne grâce à toi.

Merciiii :)