Aller au contenu

Requête HTTP

Résumé

  • Nom interne : HttpRequest
  • Catégorie : Communication
  • Objectif : Exécuter une requête HTTP GET ou POST avec des paramètres, en-têtes, corps et délais configurables. Retourne le code de réponse HTTP et le corps de la réponse.
  • Type de tâche : Normale

Compatibilité

  • Version AndroMate minimale : 1.1.0

  • Version AndroMate maximale : 1.1.0

  • Android minimum : Android 13 (API 33)

  • Android maximum testé : Android 16 (API 36)

  • Permissions requises :

    • INTERNET
    • ACCESS_NETWORK_STATE

Description détaillée

La tâche Requête HTTP exécute une requête HTTP GET ou POST vers l'url spécifiée. Les paramètres, en-têtes et le corps de la requête sont configurés individuellement. Les délais de connexion et de lecture sont contrôlés séparément. La journalisation de débogage peut être activée via httpDebug.

La tâche résout toutes les variables dynamiques dans url, headers, parameters et body avant d'exécuter la requête. En cas de succès, le code de réponse HTTP et le corps de la réponse sont stockés dans les variables de sortie depuis HttpRequestResult. Une IOException pendant l'exécution lève HTTP-ERROR-001.


Paramètres d'entrée

Paramètre Type Obligatoire Valeurs possibles Compatibilité Android Compatibilité AndroMate Défaut
url Chaîne Oui URL HTTP/HTTPS valide — supporte les références $variable Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""
method Chaîne Non "GET", "POST" Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 "GET"
connectionTimeout Long Non Délai de connexion en millisecondes Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 5000
readTimeout Long Non Délai de lecture en millisecondes Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 5000
httpDebug Booléen Non true / false — activer la journalisation de débogage Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 false
parameters JSONArray Non Liste d'objets {"param_name": "...", "value": "..."} Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 []
headers JSONArray Non Liste d'objets {"header_name": "...", "value": "..."} Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 []
body Chaîne Non Corps brut de la requête Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 ""

Paramètres de sortie

Champ Type Condition de déclenchement Compatibilité Android Compatibilité AndroMate Défaut
responseCode_output Chaîne (Entier) Toujours en cas de succès — code de statut HTTP Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
responseBody_output Chaîne Toujours en cas de succès — corps de la réponse Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>

Remarque : Les variables de sortie ne sont écrites que si la variable workflow correspondante existe déjà dans le contexte d'exécution (déclarée dans la tâche Start).


Exceptions

Code Nom de l'exception Description
HTTP-ERROR-001 Erreur I/O HTTP Une IOException s'est produite pendant l'exécution HTTP (depuis AndromateExceptionTypes.HTTP_REQUEST_IO_EXCEPTION_ERROR).

Diagramme d'exécution

flowchart TD
    Start([▶ HttpRequest]) --> ResolveParams[🔄 Résoudre url, headers,\nparameters, body]

    ResolveParams --> CreateClient[🔗 Créer client HTTP\nmethod, connectionTimeout, readTimeout, httpDebug]

    CreateClient --> Execute[📡 Exécuter requête HTTP\nGET ou POST]

    Execute -->|IOException| E1[❌ HTTP-ERROR-001\nErreur I/O HTTP]
    Execute -->|Succès| GetResponse[📥 Récupérer le corps de réponse\net le code de statut HTTP]

    GetResponse --> StoreResult[💾 Stocker HttpRequestResult\nresponseCode_output\nresponseBody_output]

    StoreResult --> LogReport[📋 Journaliser le rapport\nReportSection]

    LogReport --> Success([✅ HttpRequestResult])

    E1 --> Error([❌ Exception])

    style Start fill:#e3f2fd
    style Success fill:#c8e6c9
    style Error fill:#ffcdd2
    style E1 fill:#ffcdd2
    style ResolveParams fill:#fff9c4
    style CreateClient fill:#f3e5f5
    style Execute fill:#f3e5f5
    style GetResponse fill:#fff9c4
    style StoreResult fill:#c8e6c9

Fonctionnement :

  1. Résoudre les paramètres : résout les variables dynamiques dans url, headers, parameters et body
  2. Créer le client HTTP : initialise le client HTTP avec method, connectionTimeout, readTimeout et httpDebug
  3. Exécuter la requête : envoie la requête HTTP GET ou POST
  4. En cas d'IOException : lève HTTP-ERROR-001
  5. Récupérer la réponse : obtient le corps et le code de statut HTTP
  6. Stocker le résultat : sauvegarde les résultats dans HttpRequestResultresponseCode_output et responseBody_output
  7. Journaliser le rapport : enregistre le rapport d'exécution
  8. Résultat : retourne HttpRequestResult

Exemples de code

Exemple 1 — Requête GET simple

{
  "HttpRequest": [
    {
      "id": "1",
      "title": "GET statut appareil",
      "url": "https://api.example.com/status",
      "method": "GET",
      "responseCode_output": "$http_status",
      "responseBody_output": "$http_body"
    }
  ]
}

Exemple 2 — Requête POST avec corps JSON

{
  "HttpRequest": [
    {
      "id": "2",
      "title": "POST rapport appareil",
      "url": "https://api.example.com/report",
      "method": "POST",
      "connectionTimeout": 5000,
      "readTimeout": 10000,
      "body": "{ \"deviceId\": \"$DEVICE_ID\", \"status\": \"ok\" }",
      "headers": [
        { "header_name": "Content-Type", "value": "application/json" },
        { "header_name": "Authorization", "value": "Bearer $TOKEN" }
      ],
      "responseCode_output": "$http_code",
      "responseBody_output": "$http_reponse"
    }
  ]
}

Exemple 3 — GET avec paramètres de requête

{
  "HttpRequest": [
    {
      "id": "3",
      "title": "GET avec paramètres",
      "url": "https://api.example.com/monitoring",
      "method": "GET",
      "parameters": [
        { "param_name": "deviceId", "value": "$DEVICE_ID" },
        { "param_name": "session", "value": "$SESSION_ID" }
      ],
      "httpDebug": true,
      "responseCode_output": "$code_statut",
      "responseBody_output": "$corps_reponse"
    }
  ]
}

Exemple 4 — POST avec délais personnalisés

{
  "HttpRequest": [
    {
      "id": "4",
      "title": "POST avec délais étendus",
      "url": "$api_endpoint",
      "method": "POST",
      "connectionTimeout": 10000,
      "readTimeout": 30000,
      "body": "$payload_requete",
      "headers": [
        { "header_name": "X-API-Key", "value": "$API_KEY" }
      ],
      "responseCode_output": "$code_resp",
      "responseBody_output": "$corps_resp"
    }
  ]
}

Détails des paramètres d'entrée

1. url — URL cible

L'URL HTTP ou HTTPS du point de terminaison à appeler. Supporte les références $variable_workflow — résolues à l'exécution.

  • Défaut : ""
  • Supporte les variables : Oui

2. method — Méthode HTTP

La méthode HTTP utilisée pour la requête.

Valeur Description
"GET" Récupérer des données depuis le serveur — paramètres ajoutés à l'URL
"POST" Envoyer des données au serveur — corps ou paramètres dans le corps de la requête
  • Défaut : "GET"

3. connectionTimeout — Délai de connexion

Temps maximum en millisecondes pour établir la connexion HTTP.

  • Type : Long
  • Défaut : 5000 (5 secondes)

4. readTimeout — Délai de lecture

Temps maximum en millisecondes pour attendre la réponse du serveur après l'établissement de la connexion.

  • Type : Long
  • Défaut : 5000 (5 secondes)

5. httpDebug — Journalisation de débogage

Lorsque true, active la journalisation HTTP verbeuse dans le rapport de la tâche.

  • Défaut : false

6. parameters — Paramètres de requête/corps

Un tableau JSON d'objets paramètres, chacun avec les champs param_name et value. Les paramètres sont ajoutés à l'URL pour les requêtes GET ou inclus dans le corps pour les requêtes POST.

"parameters": [
  { "param_name": "deviceId", "value": "$DEVICE_ID" },
  { "param_name": "type", "value": "diagnostic" }
]
  • Défaut : []

7. headers — En-têtes HTTP

Un tableau JSON d'objets en-têtes, chacun avec les champs header_name et value. Ajoutés à chaque requête.

"headers": [
  { "header_name": "Authorization", "value": "Bearer $TOKEN" },
  { "header_name": "Content-Type", "value": "application/json" }
]
  • Défaut : []

8. body — Corps brut de la requête

Une chaîne de corps brut envoyée avec la requête. Utilisée principalement avec POST. Supporte les références $variable_workflow.

"body": "{ \"deviceId\": \"$DEVICE_ID\" }"
  • Défaut : ""

Détails des paramètres de sortie

responseCode_output — Code de réponse HTTP

Stocke le code de statut HTTP retourné par le serveur sous forme de chaîne (depuis HttpRequestResult).

  • Exemples : "200" (OK), "201" (Créé), "400" (Mauvaise requête), "500" (Erreur serveur)
  • Écrit lors de tout échange HTTP réussi (quelle que soit la valeur du statut HTTP)

responseBody_output — Corps de la réponse HTTP

Stocke la chaîne brute du corps de la réponse retournée par le serveur (depuis HttpRequestResult).

  • Écrit lors de tout échange HTTP réussi
  • Peut être vide si le serveur ne retourne aucun corps

Exemple JSON complet

{
  "HttpRequest": [
    {
      "id": "1",
      "title": "Requête HTTP",
      "url": "https://api.example.com/monitoring",
      "method": "POST",
      "connectionTimeout": 5000,
      "readTimeout": 10000,
      "httpDebug": true,
      "body": "{ \"deviceId\": \"$DEVICE_ID\" }",
      "parameters": [
        { "param_name": "deviceId", "value": "$DEVICE_ID" }
      ],
      "headers": [
        { "header_name": "Authorization", "value": "Bearer $TOKEN" }
      ],
      "responseCode_output": "$HTTP_STATUS",
      "responseBody_output": "$HTTP_RESULT"
    }
  ]
}