

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Requête HTTP
<a name="monetization-functions-types-http-request"></a>

## Quand l’utiliser
<a name="monetization-functions-types-http-request-when"></a>

À utiliser `HTTP_REQUEST` lorsque votre fonction doit appeler un service externe. Les cas d'utilisation courants incluent la récupération de données d'identité auprès d'un fournisseur de résolution, la récupération de segments d'audience à partir d'une plateforme de gestion de données et l'envoi d'informations de session à un terminal de journalisation.

## Champs de configuration
<a name="monetization-functions-types-http-request-fields"></a>

Une `HTTP_REQUEST` fonction comporte les champs suivants :
+ **Runtime ** : langage d'expression. Réglez ce paramètre sur`JSONATA`.
+ **MethodType**— La méthode HTTP. Les valeurs prises en charge sont `GET` et `POST`.
+ **URL ** : URL à laquelle envoyer la demande. Vous pouvez utiliser une URL statique ou une expression JSonata qui génère l'URL de manière dynamique.
+ ****En-têtes : en-têtes HTTP à inclure dans la demande, spécifiés sous forme de paires nom d'en-tête et valeur. Utilisez la syntaxe des `{%...%}` expressions pour les valeurs d'en-tête dynamiques. Les valeurs statiques peuvent être spécifiées directement sous forme de chaînes.
+ **Corps ** : corps de la demande à envoyer. Utilisé pour les `POST` demandes. Vous pouvez utiliser une expression JSonata pour construire le corps de manière dynamique.
+ **RequestTimeoutMilliseconds**(obligatoire) — Combien de temps faut-il attendre pour obtenir une réponse ?
+ **Sortie ** : définit les valeurs à produire une fois l'appel HTTP terminé. Chaque entrée associe une clé de sortie (telle que`player_params.envelope_id`) à une expression qui peut faire référence à l'`response`objet.

Pour connaître les limites de taille et les restrictions qui s'appliquent à ces champs, consultez[Restrictions](monetization-functions-limits.md).

## Comment la demande est traitée
<a name="monetization-functions-types-http-request-phases"></a>

MediaTailor traite une `HTTP_REQUEST` fonction en deux étapes :

1. **Génère la demande ** : MediaTailor évalue les `Body` expressions `Url``Headers`, et par rapport à l'état actuel de la session. Ces valeurs évaluées constituent la requête HTTP sortante.

1. **Traiter la réponse ** — Une fois l'appel HTTP terminé, MediaTailor évalue les expressions du bloc de sortie. Ces expressions peuvent faire référence à la fois à l'état de session d'origine et à l'`response`objet renvoyé par l'appel.

## Champs de réponse
<a name="monetization-functions-types-http-request-response"></a>

Une fois l'appel HTTP terminé, vous pouvez référencer les champs suivants dans vos expressions de sortie :


| Champ | Type | Description | 
| --- | --- | --- | 
| response.body | Objet ou tableau | Le corps de la réponse est analysé au format JSON. Défini sur null si le corps dépasse 20 000 caractères ou s'il ne s'agit pas d'un JSON valide. | 
| response.statusCode | Entier | Code d'état HTTP renvoyé par le service externe. Réglez null sur en cas de défaillance du réseau. | 
| response.text | Chaîne | Le corps brut de la réponse sous forme de chaîne, tronqué à 20 000 caractères. Réglez "Internal Error" sur en cas de défaillance du réseau. | 

**Important**  
Ce `response.body` champ est utilisé `null` lorsque la réponse dépasse 20 000 caractères, même si la réponse est un JSON valide.

**Note**  
L'objet de réponse est disponible uniquement dans le bloc de sortie d'une `HTTP_REQUEST` fonction. Vous ne pouvez pas référencer les champs de réponse dans les champs URL, en-têtes ou corps. Dans a`SEQUENTIAL_EXECUTOR`, chaque `HTTP_REQUEST` fonction ne peut accéder qu'à sa propre réponse.

La valeur de `null` signifie que les données ne sont pas disponibles. Cela se produit lorsque l'appel HTTP échoue (erreur réseau ou délai d'attente) ou lorsque le corps de la réponse dépasse 20 000 caractères ou n'est pas un JSON valide.

## Comportement des défaillances du réseau
<a name="monetization-functions-types-http-request-failure"></a>

Si l'appel HTTP échoue en raison d'une erreur réseau ou d'un délai d'attente, `response.statusCode` et si vous `response.body` êtes défini sur`null`, et `response.text` est défini sur. `"Internal Error"` Vos expressions de sortie s'exécutent toujours. Vérifiez donc toujours `response.statusCode` avant d'utiliser les données de réponse.

**Astuce**  
Utilisez une expression conditionnelle pour gérer les échecs avec élégance : `{%response.statusCode = 200 ? response.body.value : 'default'%}`

## Exemple : récupérer les données d'identité
<a name="monetization-functions-types-http-request-example"></a>

La fonction suivante appelle une API de résolution d'identité au début de la session et enregistre le résultat dans les paramètres du joueur. Il est conçu pour répondre aux exigences du `PRE_SESSION_INITIALIZATION` cycle de vie.

```
{
    "FunctionId": "fetchIdentityEnvelope",
    "FunctionType": "HTTP_REQUEST",
    "HttpRequestConfiguration": {
        "Runtime": "JSONATA",
        "MethodType": "GET",
        "Url": "{%'https://identity.example.com/v1/resolve?ip=' & $encodeUrlComponent(session.client_ip)%}",
        "Headers": {
            "Authorization": "{%'Bearer my_api_token'%}",
            "Accept": "application/json"
        },
        "RequestTimeoutMilliseconds": 2000,
        "Output": {
            "player_params.identity_envelope": "{%response.statusCode = 200 ? response.body.envelope : ''%}"
        }
    }
}
```

Pour une présentation complète d'un exemple similaire, consultez[Exemples de fonctions](monetization-functions-examples.md).