

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Solicitação HTTP
<a name="monetization-functions-types-http-request"></a>

## Quando usar
<a name="monetization-functions-types-http-request-when"></a>

Use `HTTP_REQUEST` quando sua função precisar chamar um serviço externo. Casos de uso comuns incluem a busca de dados de identidade de um provedor de resolução, a recuperação de segmentos de público de uma plataforma de gerenciamento de dados e o envio de informações da sessão para um endpoint de registro.

## Campos de configuração
<a name="monetization-functions-types-http-request-fields"></a>

Uma `HTTP_REQUEST` função tem os seguintes campos:
+ **Runtime ** — A linguagem de expressão. Defina isso como`JSONATA`.
+ **MethodType**— O método HTTP. Os valores compatíveis são `GET` e `POST`.
+ **URL ** — A URL para a qual enviar a solicitação. Você pode usar uma URL estática ou uma expressão JSOnata que cria a URL dinamicamente.
+ **Cabeçalhos ** — Os cabeçalhos HTTP a serem incluídos na solicitação, especificados como pares de nome e valor do cabeçalho. Use a sintaxe de `{%...%}` expressão para valores de cabeçalho dinâmicos. Os valores estáticos podem ser especificados diretamente como cadeias de caracteres.
+ **Corpo ** — O corpo da solicitação a ser enviada. Usado com `POST` solicitações. Você pode usar uma expressão JSOnata para criar o corpo dinamicamente.
+ **RequestTimeoutMilliseconds**(obrigatório) — Quanto tempo esperar por uma resposta.
+ **Saída ** — Define os valores a serem produzidos após a conclusão da chamada HTTP. Cada entrada mapeia uma chave de saída (como`player_params.envelope_id`) para uma expressão que pode referenciar o `response` objeto.

Para limites e restrições de tamanho que se aplicam a esses campos, consulte[Limites](monetization-functions-limits.md).

## Como a solicitação é processada
<a name="monetization-functions-types-http-request-phases"></a>

MediaTailor processa uma `HTTP_REQUEST` função em duas etapas:

1. **Crie a solicitação ** — MediaTailor avalia as `Body` expressões`Url`,`Headers`, e em relação ao estado atual da sessão. Esses valores avaliados formam a solicitação HTTP de saída.

1. **Processar a resposta ** — Após a conclusão da chamada HTTP, MediaTailor avalia as expressões no bloco de saída. Essas expressões podem fazer referência ao estado original da sessão e ao `response` objeto retornado pela chamada.

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

Depois que a chamada HTTP for concluída, você poderá fazer referência aos seguintes campos em suas expressões de saída:


| Campo | Tipo | Description | 
| --- | --- | --- | 
| response.body | Objeto ou matriz | O corpo da resposta é analisado como JSON. Definido como null se o corpo exceder 20.000 caracteres ou não for um JSON válido. | 
| response.statusCode | Inteiro | O código de status HTTP retornado pelo serviço externo. Definido como null sem falha de rede. | 
| response.text | String | O corpo bruto da resposta como uma string, truncada para 20.000 caracteres. Definido como "Internal Error" sem falha de rede. | 

**Importante**  
O `response.body` campo é `null` quando a resposta excede 20.000 caracteres, mesmo se a resposta for um JSON válido.

**nota**  
O objeto de resposta está disponível somente no bloco Saída de uma `HTTP_REQUEST` função. Você não pode referenciar campos de resposta nos campos URL, Cabeçalhos ou Corpo. Em a`SEQUENTIAL_EXECUTOR`, cada `HTTP_REQUEST` função pode acessar somente sua própria resposta.

Um valor de `null` significa que os dados não estão disponíveis. Isso acontece quando a chamada HTTP falha (erro de rede ou tempo limite) ou quando o corpo da resposta excede 20.000 caracteres ou não é um JSON válido.

## Comportamento de falha de rede
<a name="monetization-functions-types-http-request-failure"></a>

Se a chamada HTTP falhar devido a um erro de rede ou tempo limite, `response.statusCode` e `response.body` estiver definida como`null`, e `response.text` estiver definida como. `"Internal Error"` Suas expressões de saída ainda são executadas, portanto, sempre verifique `response.statusCode` antes de usar os dados de resposta.

**dica**  
Use uma expressão condicional para lidar com falhas normalmente: `{%response.statusCode = 200 ? response.body.value : 'default'%}`

## Exemplo: Buscar dados de identidade
<a name="monetization-functions-types-http-request-example"></a>

A função a seguir chama uma API de resolução de identidade no início da sessão e armazena o resultado nos parâmetros do player. Ele foi projetado para o gancho do `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 obter uma explicação completa de um exemplo semelhante, consulte. [Exemplos de funções](monetization-functions-examples.md)