

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

## Cuándo se debe usar
<a name="monetization-functions-types-http-request-when"></a>

`HTTP_REQUEST`Úselo cuando su función necesite llamar a un servicio externo. Los casos de uso habituales incluyen la obtención de datos de identidad de un proveedor de resolución, la recuperación de segmentos de audiencia de una plataforma de gestión de datos y el envío de la información de la sesión a un punto final de registro.

## Campos de configuración
<a name="monetization-functions-types-http-request-fields"></a>

Una `HTTP_REQUEST` función tiene los siguientes campos:
+ **Tiempo de ejecución**: el lenguaje de expresiones. Establézcalo en`JSONATA`.
+ **MethodType**— El método HTTP. Los valores admitidos son `GET` y `POST`.
+ **URL**: la URL a la que enviar la solicitud. Puedes usar una URL estática o una expresión Jsonata que genere la URL de forma dinámica.
+ **Encabezados**: los encabezados HTTP que se van a incluir en la solicitud, especificados como pares de nombre y valor del encabezado. Utilice `{%...%}` la sintaxis de expresiones para los valores de encabezado dinámicos. Los valores estáticos se pueden especificar directamente como cadenas.
+ **Cuerpo**: el cuerpo de la solicitud que se va a enviar. Se usa con `POST` las solicitudes. Puede usar una expresión JSonata para construir el cuerpo de forma dinámica.
+ **RequestTimeoutMilliseconds**(obligatorio): cuánto tiempo hay que esperar para recibir una respuesta.
+ **Salida**: define los valores que se generarán una vez finalizada la llamada HTTP. Cada entrada asigna una clave de salida (por ejemplo`player_params.envelope_id`) a una expresión que puede hacer referencia al `response` objeto.

Para conocer los límites y restricciones de tamaño que se aplican a estos campos, consulte[Límites](monetization-functions-limits.md).

## Cómo se procesa la solicitud
<a name="monetization-functions-types-http-request-phases"></a>

MediaTailor procesa una `HTTP_REQUEST` función en dos pasos:

1. **Crea la solicitud**: MediaTailor evalúa las `Body` expresiones `Url``Headers`, y comparándolas con el estado actual de la sesión. Estos valores evaluados forman la solicitud HTTP saliente.

1. **Procesa la respuesta**: una vez finalizada la llamada HTTP, MediaTailor evalúa las expresiones del bloque de salida. Estas expresiones pueden hacer referencia tanto al estado original de la sesión como al `response` objeto devuelto por la llamada.

## Campos de respuesta
<a name="monetization-functions-types-http-request-response"></a>

Una vez completada la llamada HTTP, puedes hacer referencia a los siguientes campos en tus expresiones de salida:


| Campo | Tipo | Description (Descripción) | 
| --- | --- | --- | 
| response.body | Objeto o matriz | El cuerpo de la respuesta se analizó como JSON. nullEstablézcalo si el cuerpo supera los 20 000 caracteres o no es un JSON válido. | 
| response.statusCode | Entero | El código de estado HTTP devuelto por el servicio externo. Definido como null si no hubiera error de red. | 
| response.text | Cadena | El cuerpo de la respuesta sin procesar en forma de cadena, truncado a 20 000 caracteres. Definido como si no "Internal Error" hubiera error de red. | 

**importante**  
El `response.body` campo aparece `null` cuando la respuesta supera los 20 000 caracteres, incluso si la respuesta es un JSON válido.

**nota**  
El objeto de respuesta solo está disponible en el bloque de salida de una `HTTP_REQUEST` función. No puede hacer referencia a los campos de respuesta en los campos URL, encabezados o cuerpo. En a`SEQUENTIAL_EXECUTOR`, cada `HTTP_REQUEST` función solo puede acceder a su propia respuesta.

Un valor de `null` significa que los datos no están disponibles. Esto ocurre cuando la llamada HTTP falla (error de red o tiempo de espera) o cuando el cuerpo de la respuesta supera los 20 000 caracteres o no es un JSON válido.

## Comportamiento ante fallos de red
<a name="monetization-functions-types-http-request-failure"></a>

Si la llamada HTTP falla debido a un error de red o a un tiempo de espera, `response.statusCode` y `response.body` está configurada en y `response.text` está configurada en. `null` `"Internal Error"` Las expresiones de salida siguen ejecutándose, así que compruébalas siempre `response.statusCode` antes de usar los datos de respuesta.

**sugerencia**  
Usa una expresión condicional para gestionar los errores correctamente: `{%response.statusCode = 200 ? response.body.value : 'default'%}`

## Ejemplo: obtener datos de identidad
<a name="monetization-functions-types-http-request-example"></a>

La siguiente función llama a una API de resolución de identidades al inicio de la sesión y almacena el resultado en los parámetros del reproductor. Está diseñada para el `PRE_SESSION_INITIALIZATION` ciclo de vida.

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

Para ver un recorrido completo de un ejemplo similar, consulte[Ejemplos de funciones](monetization-functions-examples.md).