ID region
REGION_ID
adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r
disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.
Pelajari ID region lebih lanjut.
Halaman ini mendeskripsikan cara mengeluarkan permintaan HTTP(S) dari aplikasi App Engine Anda.
Secara default, aplikasi yang berjalan di runtime Java 8 menggunakan class Java standar untuk permintaan HTTP(S), sepertijava.net.HttpURLConnection
. Anda mengirimkan permintaan
seperti yang Anda lakukan untuk aplikasi Java lainnya. Untuk menggunakan perilaku default, Anda
harus mengaktifkan penagihan untuk aplikasi atau Anda akan mendapatkan pengecualian
berikut:
java.net.UnknownHostException
java.net.SocketTimeoutException
java.io.IOException
Menggunakan class jaringan runtime standar
Jika menggunakan class jaringan Java standar, aplikasi Anda akan memiliki akses ke fitur berikut:
- Batas 32 MB pada data permintaan akan dihapus.
- Dukungan untuk HTTP 2.0.
- Mendukung semua API berbasis Google Cloud yang dapat diakses dari Library Klien Google Cloud untuk Java.
Menggunakan URL-fetch
Jika Anda harus menggunakan URL-fetch pada aplikasi Java 8, tambahkan baris berikut ke appengine-web.xml:
<url-stream-handler>urlfetch</url-stream-handler>
Contoh:
<xml version="1.0" encoding="utf-8">
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<!-- ... -->
<url-stream-handler>urlfetch</url-stream-handler>
<!-- ... -->
</appengine-web-app>
Mengeluarkan permintaan HTTP
Anda mengeluarkan permintaan HTTP keluar menggunakanjava.net.URLConnection
.
Cuplikan berikut menunjukkan cara melakukan permintaan GET
HTTP dasar.
Aplikasi akan membuat objek URL
baru, lalu memanggil metode openStream()
objek untuk mengambil konten di URL tersebut:
Untuk permintaan lanjutan lainnya, gunakan java.net.HttpURLConnection
sebagai berikut:
- Buat objek
URL
baru. - Buat objek
URLConnection
baru dengan memanggil metodeopenConnection()
objekURL
Anda. - Buat objek
HttpURLConnection
baru dengan mentransmisikan objekURLConnection
ke jenis objekHttpURLConnection
. - Tetapkan metode permintaan objek
HttpURLConnection
. - Buat streaming output untuk permintaan.
- Tulis payload permintaan ke aliran data.
- Tutup aliran data.
Cuplikan berikut menunjukkan cara menggunakan HttpURLConnection
untuk
melakukan permintaan lanjutan, dengan mengirimkan data dari formulir web melalui
permintaan PUT
:
Menyetel waktu tunggu permintaan
Jika menggunakan URL-fetch, Anda dapat menyesuaikan batas waktu default untuk
permintaan menggunakan setelan appengine.api.urlfetch.defaultBatas
pada file appengine-web.xml
.
Menyetel header
Jika menggunakan URL-fetch, Anda dapat menetapkan header HTTP pada permintaan keluar,
dengan memanggil metode setRequestProperty()
objek HttpURLConnection
. Cuplikan
berikut menetapkan header X-MyApp-Version
ke 2.7.3
:
conn.setRequestProperty("X-MyApp-Version", "2.7.3");
Menonaktifkan pengalihan
Secara default,HttpURLConnection
mengikuti pengalihan HTTP.
Jika Anda menggunakan URL-fetch, layanan URL-fetch yang mendasarinya akan mengikuti hingga lima pengalihan secara default. Pengalihan ini dapat meneruskan informasi sensitif, seperti header otorisasi, ke tujuan yang dialihkan. Jika aplikasi Anda tidak memerlukan pengalihan HTTP, sebaiknya nonaktifkan pengalihan.
Untuk menonaktifkan perilaku ini, teruskan nilai false
ke metode setInstanceFollowRedirects()
objek HttpURLConnection
Anda:
conn.setInstanceFollowRedirects(false);
Jika aplikasi Anda menggunakan paket urlfetch
yang mendasarinya secara langsung,
bukan java.net
, aplikasi harus menentukan
doNotFollowRedirects
.
Mengeluarkan permintaan HTTPS
Jika Anda menggunakan URL-fetch, keluarkan permintaan HTTPS menggunakan class FetchOptions
dalam paket urlfetch
dan panggil validateCertificate()
.
Mengeluarkan permintaan asinkron
Permintaan HTTP(S) bersifat sinkron secara default. Untuk memberikan permintaan
asinkron, aplikasi Anda harus
menggunakan metode fetchAsync()
URLFetchService
. Metode ini akan menampilkan
java.util.concurrent.Future<HTTPResponse>
.
Mengeluarkan permintaan ke aplikasi App Engine lain
Saat menerbitkan permintaan ke aplikasi App Engine lain, aplikasi App Engine Anda harus menegaskan identitasnya dengan menambahkan header X-Appengine-Inbound-Appid
ke permintaan tersebut.
Jika Anda menginstruksikan layanan URL-Fetch untuk tidak mengikuti pengalihan, App Engine akan otomatis menambahkan header ini ke permintaan.
Lihat Menonaktifkan pengalihan untuk mendapatkan panduan tentang cara menonaktifkan pengalihan.
Langkah selanjutnya
Pelajari layanan URL-Fetch, seperti header yang dikirim dalam permintaan URL Fetch di Permintaan Keluar.