Lire Response header après XMLHTTP Post

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

3 réponses

  1. Modérateur

    Bonjour,

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


    1. 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 ?

    2. Contributeur
      @Herve_be

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

    3. @yg_be

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

    4. Contributeur
      @Herve_be

      Cela permettra de vérifier que ton code fonctionne.

    5. @yg_be

      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 ?

  2. Modérateur

    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.


    1. 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.

    2. Modérateur
      @Herve_be

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

    3. Contributeur
      @Herve_be

      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.

    4. @yg_be

      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.

    5. @jordane45

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

  3. 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.

    1. Contributeur

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

    2. @yg_be

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