

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# HTTP\_REQUEST
<a name="monetization-functions-types-http-request"></a>

## Wann sollte dies verwendet werden?
<a name="monetization-functions-types-http-request-when"></a>

`HTTP_REQUEST`Wird verwendet, wenn Ihre Funktion einen externen Dienst aufrufen muss. Zu den häufigsten Anwendungsfällen gehören das Abrufen von Identitätsdaten von einem Lösungsanbieter, das Abrufen von Zielgruppensegmenten von einer Datenverwaltungsplattform und das Senden von Sitzungsinformationen an einen Protokollierungsendpunkt.

## Felder für die Konfiguration
<a name="monetization-functions-types-http-request-fields"></a>

Eine `HTTP_REQUEST` Funktion hat die folgenden Felder:
+ **Runtime** — Die Ausdruckssprache. Stellen Sie dies auf ein`JSONATA`.
+ **MethodType**— Die HTTP-Methode. Unterstützte Werte sind `GET` und `POST`.
+ **Url** — Die URL, an die die Anfrage gesendet werden soll. Sie können eine statische URL oder einen JSONata-Ausdruck verwenden, der die URL dynamisch erstellt.
+ **Header** — Die HTTP-Header, die in die Anfrage aufgenommen werden sollen, angegeben als Header-Namen- und Wertepaare. Verwenden Sie die `{%...%}` Ausdruckssyntax für dynamische Header-Werte. Statische Werte können direkt als Zeichenketten angegeben werden.
+ **Body** — Der Hauptteil der Anfrage, der gesendet werden soll. Wird bei `POST` Anfragen verwendet. Sie können einen JSONata-Ausdruck verwenden, um den Körper dynamisch zu erstellen.
+ **RequestTimeoutMilliseconds**(erforderlich) — Wie lange muss auf eine Antwort gewartet werden?
+ **Ausgabe** — Definiert die Werte, die nach Abschluss des HTTP-Aufrufs erzeugt werden sollen. Jeder Eintrag ordnet einen Ausgabeschlüssel (z. B.`player_params.envelope_id`) einem Ausdruck zu, der auf das `response` Objekt verweisen kann.

Informationen zu Größenbeschränkungen und Einschränkungen, die für diese Felder gelten, finden Sie unter[Einschränkungen](monetization-functions-limits.md).

## Wie wird die Anfrage bearbeitet
<a name="monetization-functions-types-http-request-phases"></a>

MediaTailor verarbeitet eine `HTTP_REQUEST` Funktion in zwei Schritten:

1. **Erstellen Sie die Anforderung** — MediaTailor wertet die `Body` Ausdrücke `Url``Headers`, und anhand des aktuellen Sitzungsstatus aus. Diese ausgewerteten Werte bilden die ausgehende HTTP-Anfrage.

1. **Die Antwort verarbeiten** — Nach Abschluss des HTTP-Aufrufs werden die Ausdrücke im Ausgabeblock MediaTailor ausgewertet. Diese Ausdrücke können sowohl auf den ursprünglichen Sitzungsstatus als auch auf das vom Aufruf zurückgegebene `response` Objekt verweisen.

## Antwortfelder
<a name="monetization-functions-types-http-request-response"></a>

Nach Abschluss des HTTP-Aufrufs können Sie in Ihren Ausgabeausdrücken auf die folgenden Felder verweisen:


| Feld | Typ | Description | 
| --- | --- | --- | 
| response.body | Objekt oder Array | Der Antworttext wurde als JSON analysiert. nullWird auf gesetzt, wenn der Hauptteil mehr als 20.000 Zeichen enthält oder kein gültiges JSON ist. | 
| response.statusCode | Ganzzahl | Der vom externen Dienst zurückgegebene HTTP-Statuscode. nullAuf „Bei Netzwerkausfall“ gesetzt. | 
| response.text | Zeichenfolge | Der unformatierte Antworttext als Zeichenfolge, gekürzt auf 20.000 Zeichen. "Internal Error"Auf „Bei Netzwerkausfall“ gesetzt. | 

**Wichtig**  
Das `response.body` Feld wird verwendet`null`, wenn die Antwort 20.000 Zeichen überschreitet, auch wenn es sich bei der Antwort um ein gültiges JSON handelt.

**Anmerkung**  
Das Antwortobjekt ist nur im Ausgabeblock einer `HTTP_REQUEST` Funktion verfügbar. Sie können in den Feldern Url, Headers oder Body nicht auf Antwortfelder verweisen. In a `SEQUENTIAL_EXECUTOR` kann jede `HTTP_REQUEST` Funktion nur auf ihre eigene Antwort zugreifen.

Ein Wert von `null` bedeutet, dass die Daten nicht verfügbar sind. Dies passiert, wenn der HTTP-Aufruf fehlschlägt (Netzwerkfehler oder Timeout) oder wenn der Antworttext 20.000 Zeichen überschreitet oder kein gültiges JSON ist.

## Verhalten bei Netzwerkausfällen
<a name="monetization-functions-types-http-request-failure"></a>

Wenn der HTTP-Aufruf aufgrund eines Netzwerkfehlers oder einer Zeitüberschreitung fehlschlägt `response.statusCode` und auf `null` eingestellt `response.body` sind und auf `response.text` `"Internal Error"` gesetzt sind. Ihre Ausgabeausdrücke werden weiterhin ausgeführt. Überprüfen Sie dies daher immer, `response.statusCode` bevor Sie Antwortdaten verwenden.

**Tipp**  
Verwenden Sie einen bedingten Ausdruck, um Fehler ordnungsgemäß zu behandeln: `{%response.statusCode = 200 ? response.body.value : 'default'%}`

## Beispiel: Identitätsdaten abrufen
<a name="monetization-functions-types-http-request-example"></a>

Die folgende Funktion ruft zu Beginn der Sitzung eine API zur Identitätsauflösung auf und speichert das Ergebnis in Player-Parametern. Sie ist für den `PRE_SESSION_INITIALIZATION` Lifecycle-Hook konzipiert.

```
{
    "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 : ''%}"
        }
    }
}
```

Eine vollständige exemplarische Vorgehensweise für ein ähnliches Beispiel finden Sie unter[Beispiele für Funktionen](monetization-functions-examples.md).