| |
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)
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) 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 CdtMessage 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...  |
| |
| |
| | | |
|
| | |
| |
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 |
| | |
|
| | |