Lire Response header après XMLHTTP Post

Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   -  
Herve_be Messages postés 1182 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

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    Bonjour,

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


    0
    1. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
       

      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
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Herve_be Messages postés 1182 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
    3. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       

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

      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention  
       

      Cela permettra de vérifier que ton code fonctionne.

      0
    5. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11 > yg_be Messages postés 23437 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
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    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
    1. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
       

      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
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Herve_be Messages postés 1182 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
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Herve_be Messages postés 1182 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
    4. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11 > yg_be Messages postés 23437 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
    5. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11 > jordane45 Messages postés 30426 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
  3. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
     

    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

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

      0
      1. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

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

        0