

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

## Kapan harus digunakan
<a name="monetization-functions-types-http-request-when"></a>

Gunakan `HTTP_REQUEST` saat fungsi Anda perlu memanggil layanan eksternal. Kasus penggunaan umum termasuk mengambil data identitas dari penyedia resolusi, mengambil segmen audiens dari platform manajemen data, dan mengirim informasi sesi ke titik akhir logging.

## Bidang konfigurasi
<a name="monetization-functions-types-http-request-fields"></a>

Suatu `HTTP_REQUEST` fungsi memiliki bidang berikut:
+ **Runtime ** — Bahasa ekspresi. Atur ini ke`JSONATA`.
+ **MethodType**— Metode HTTP. Nilai yang didukung adalah `GET` dan `POST`.
+ **Ur ** l — URL untuk mengirim permintaan. Anda dapat menggunakan URL statis atau JSONata ekspresi yang membangun URL secara dinamis.
+ **Header ** — Header HTTP untuk disertakan dalam permintaan, ditentukan sebagai nama header dan pasangan nilai. Gunakan sintaks `{%...%}` ekspresi untuk nilai header dinamis. Nilai statis dapat ditentukan langsung sebagai string.
+ **Tubuh ** — Badan permintaan untuk dikirim. Digunakan dengan `POST` permintaan. Anda dapat menggunakan JSONata ekspresi untuk membangun tubuh secara dinamis.
+ **RequestTimeoutMilliseconds**(wajib) - Berapa lama menunggu tanggapan.
+ **Output ** — Mendefinisikan nilai yang akan dihasilkan setelah panggilan HTTP selesai. Setiap entri memetakan kunci keluaran (seperti`player_params.envelope_id`) ke ekspresi yang dapat mereferensikan `response` objek.

Untuk batasan ukuran dan batasan yang berlaku untuk bidang ini, lihat[Batas](monetization-functions-limits.md).

## Bagaimana permintaan diproses
<a name="monetization-functions-types-http-request-phases"></a>

MediaTailor memproses `HTTP_REQUEST` fungsi dalam dua langkah:

1. **Membangun permintaan ** — MediaTailor mengevaluasi`Url`,`Headers`, dan `Body` ekspresi terhadap status sesi saat ini. Nilai-nilai yang dievaluasi ini membentuk permintaan HTTP keluar.

1. **Memproses respons ** — Setelah panggilan HTTP selesai MediaTailor , evaluasi ekspresi di blok output. Ekspresi ini dapat mereferensikan status sesi asli dan `response` objek yang dikembalikan oleh panggilan.

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

Setelah panggilan HTTP selesai, Anda dapat mereferensikan bidang berikut dalam ekspresi Output Anda:


| Bidang | Tipe | Deskripsi | 
| --- | --- | --- | 
| response.body | Objek atau Array | Badan respons diurai sebagai JSON. Setel ke null jika tubuh melebihi 20.000 karakter atau JSON tidak valid. | 
| response.statusCode | Bilangan Bulat | Kode status HTTP dikembalikan oleh layanan eksternal. Setel ke null pada kegagalan jaringan. | 
| response.text | String | Badan respons mentah sebagai string, dipotong menjadi 20.000 karakter. Setel ke "Internal Error" pada kegagalan jaringan. | 

**penting**  
Bid `response.body` ang adalah `null` ketika respons melebihi 20.000 karakter, bahkan jika responsnya adalah JSON yang valid.

**catatan**  
Objek respons hanya tersedia di blok Output dari suatu `HTTP_REQUEST` fungsi. Anda tidak dapat mereferensikan bidang respons di bidang Url, Header, atau Body. Dalam a`SEQUENTIAL_EXECUTOR`, setiap `HTTP_REQUEST` fungsi hanya dapat mengakses responsnya sendiri.

Nilai `null` berarti data tidak tersedia. Ini terjadi ketika panggilan HTTP gagal (kesalahan jaringan atau batas waktu) atau ketika badan respons melebihi 20.000 karakter atau JSON tidak valid.

## Perilaku kegagalan jaringan
<a name="monetization-functions-types-http-request-failure"></a>

Jika panggilan HTTP gagal karena kesalahan jaringan atau batas waktu, `response.statusCode` dan `response.body` disetel ke`null`, dan `response.text` disetel ke`"Internal Error"`. Ekspresi Output Anda masih berjalan, jadi selalu periksa `response.statusCode` sebelum menggunakan data respons.

**Tip**  
Gunakan ekspresi kondisional untuk menangani kegagalan dengan anggun: `{%response.statusCode = 200 ? response.body.value : 'default'%}`

## Contoh: Ambil data identitas
<a name="monetization-functions-types-http-request-example"></a>

Fungsi berikut memanggil API resolusi identitas saat sesi dimulai dan menyimpan hasilnya dalam parameter pemain. Ini dirancang untuk kait `PRE_SESSION_INITIALIZATION` siklus hidup.

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

Untuk panduan lengkap dari contoh serupa, lihat[Contoh fungsi](monetization-functions-examples.md).