Lire Response header après XMLHTTP Post

Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   -  
Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,
En VB6

With CreateObject("Microsoft.XMLHTTP")
.Open "POST", "URL du script php qui fait essentiellement move_uploaded_fil" & Folder, False  ' aSync = false
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
.send pvToByteArray(sPostData)
If .Status = 200 Then
' OK
Else
   Err = CStr(.Status) & " " & .StatusText
End If

J'obtiens parfois une erreur 503 Service Unavailable qui n'est pas très explicite.

Je vois qu'on peut obtenir davantage d'infos dans un Response header : comment l'obtenir et le décoder ?

Grand merci d'avance pour votre aide

A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Bonjour,

regarde du côté de la méthode .getAllResponseHeaders


0
Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   10
 

Merci,

ceci est-il correct ?

If .Status = 200 Then
' OK
Else
   Err = CStr(.Status) & " " & .StatusText
   MsgTxt = .getAllResponseHeaders()
End If

Question subsidiaire : comment simuler cette erreur qui survient rarement ?

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention  
 

Si tu as un site web en php, tu peux utiliser http_response_code() pour renvoyer un code d'erreur.

0
Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   10 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

http_response_code va-t-il aussi générer un header représentatif ?

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention  
 

Cela permettra de vérifier que ton code fonctionne.

0
Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   10 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Merci, http_response_code(503) fonctionne, j'obtiens
Date: Thu, 05 Dec 2024 14:47:17 GMT Server: Apache X-Powered-By: PHP/8.0.30 Cache-Control: no-cache Content-Type: text/html; charset=ISO-8859-1 X-Onecom-Cluster-Name: X-Varnish: 25067243 Age: 0 Via: 1.1 webcache2 (Varnish/trunk) Connection: keep-alive Transfer-Encoding: chunked

En débroussaillant
Date: Thu, 05 Dec 2024 14:47:17 GMT
Server: Apache X-Powered-By: PHP/8.0.30
Cache-Control: no-cache
Content-Type: text/html; charset=ISO-8859-1
X-Onecom-Cluster-Name: X-Varnish: 25067243
Age: 0
Via: 1.1 webcache2 (Varnish/trunk)
Connection: keep-alive
Transfer-Encoding: chunked

Comment comprendre pourquoi j'ai eu l'erreur 503 ?

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Une erreur 500 est une erreur "serveur" (pb de configuration ou erreur dans le code...)

Là.. c'est une erreur 503 ..  les causes peuvent être variées

par exemple:

Le serveur est surchargé : Il reçoit trop de demandes et n’arrive pas à les gérer. Pour cette raison il répond donc avec ce message d’erreur. Les origines de ces surcharges sont très différentes : cela peut être par exemple une hausse inattendue du trafic. Une croissance continue du projet Web peut également provoquer une surcharge si dans le même temps les ressources ne sont pas mises à niveau. Des attaques de logiciels malveillants et des spams peuvent aussi être à l’origine d’une surcharge. Enfin une mauvaise programmation du système de gestion de contenu ou de l’application Web peut aussi provoquer ce phénomène.


0
Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   10
 

La question est "pourquoi survient-elle toujours au même client ?"

Je n'ai jamais eu cette erreur alors que j'utilise intensivement ce logiciel en VB6.
Un des utilisateur la reçoit souvent, mais pas toujours, bizarre.

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention  
 

ajoute des logs côté serveur pour chaque appel à tes API et demande à l'utilisateur qui rencontre le souci de t'indiquer à quelle heure ça s'est produit... tu pourras essayer de voir l'adresse utilisée par l'utilisateur, ainsi que les paramètres envoyés et voir si tu le test de la même façon chez toi ça fonctionne correctement...

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention  
 

Si je comprends bien ce que tu n'expliques pas, le client en question, c'est ton code PHP.

Comment sais-tu que cela n'arrive pas avec d'autres clients?

Ton code PHP ne se comporte peut-être pas comme un autre client, il est peut-être trop gourmand.

0
Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   10 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Ce que j'appelle "client" est l'utilisateur du logiciel VB6 qui appelle le script PHP.

Ce logiciel est utilisé en moyenne 20 fois par jour par plus de 5.000 utilisateurs.

Un seul m'a signalé ce problème, je pense donc que la raison est chez lui.

0
Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   10 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 

Chez One.com le log n'est pas disponible directement, il faut demander le log pour un créneau donné, et comme je ne sais pas quand le problème va survenir ...

0
Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   10
 

Je résume parce que ça devient compliqué :

Un de mes 5.000+ utilisateurs reçoit parfois une erreur 503 Service Unavailable lors de l'appel suivant

With CreateObject("Microsoft.XMLHTTP")
.Open "POST", "URL du script php qui fait essentiellement move_uploaded_file" & Folder, False  ' aSync = false
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
.send pvToByteArray(sPostData)

.getAllResponseHeaders ne permet pas d'expliquer l'origine de l'erreur.

Pour obtenir un error log one.com m'a demandé d'ajouter dans mon script php

ini_set ('track_errors', 1);
ini_set ('log_errors', 1);
ini_set ('error_log', '/customers/e/a/4/rudyv.be/httpd.www/php_error.log');

Je simule une erreur PHP avec http_response_code(503);
l'erreur se produit bien (.Status = 503) mais je n'ai pas de fichier php_error.log.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

Ta simulation fait croire au client qu'il y a une erreur, normal qu'elle n'apparaisse pas dans le log du serveur.

0
Herve_be Messages postés 1123 Date d'inscription   Statut Membre Dernière intervention   10 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Alors il n'y a plus qu'à attendre qu'elle se produise à nouveau.

0