Membuat Permintaan JSON POST Dengan HttpURLConnection

1. Ikhtisar

Dalam tutorial ini, kami akan mendemonstrasikan cara membuat permintaan JSON POST menggunakan HttpURLConnection .

2. Membuat Permintaan JSON POST dengan HttpURLConnection

2.1. Buat Objek URL

Mari buat objek URL dengan string URI target yang menerima data JSON melalui metode HTTP POST:

URL url = new URL ("//reqres.in/api/users");

2.2. Buka Koneksi

Dari objek URL di atas , kita dapat memanggil metode openConnection untuk mendapatkan objek HttpURLConnection .

Kami tidak dapat membuat instance HttpURLConnection secara langsung, karena ini adalah kelas abstrak:

HttpURLConnection con = (HttpURLConnection)url.openConnection();

2.3. Atur Metode Permintaan

Untuk mengirim permintaan POST, kita harus menyetel properti metode permintaan ke POST:

con.setRequestMethod("POST");

2.4. Setel Parameter Header Jenis Konten Permintaan

Setel header permintaan "tipe konten" ke "aplikasi / json" untuk mengirim konten permintaan dalam bentuk JSON. Parameter ini harus disetel untuk mengirim isi permintaan dalam format JSON.

Gagal melakukannya, server mengembalikan kode status HTTP "permintaan 400-buruk".

con.setRequestProperty("Content-Type", "application/json; utf-8"); 

Juga, perhatikan bahwa kami telah menyebutkan pengkodean charset bersama dengan tipe konten. Ini berguna jika pengkodean konten permintaan berbeda dari pengkodean UTF-8, yang merupakan pengkodean default.

2.5. Atur Jenis Format Respon

Setel header permintaan "Terima" ke "application / json" untuk membaca respons dalam format yang diinginkan:

con.setRequestProperty("Accept", "application/json");

2.6. Pastikan Koneksi Akan Digunakan untuk Mengirim Konten

Untuk mengirim permintaan konten, mari aktifkan properti doOutput objek URLConnection ke true .

Jika tidak, kami tidak akan dapat menulis konten ke aliran keluaran koneksi:

con.setDoOutput(true);

2.7. Buat Badan Permintaan

Setelah membuat String JSON kustom:

String jsonInputString = "{"name": "Upendra", "job": "Programmer"}";

Kami perlu menulisnya:

try(OutputStream os = con.getOutputStream()) { byte[] input = jsonInputString.getBytes("utf-8"); os.write(input, 0, input.length); }

2.8. Baca Tanggapan dari Arus Input

Dapatkan aliran input untuk membaca konten respons. Ingatlah untuk menggunakan try-with-resources untuk menutup aliran respons secara otomatis.

Baca seluruh konten respons, dan cetak string respons terakhir:

try(BufferedReader br = new BufferedReader( new InputStreamReader(con.getInputStream(), "utf-8"))) { StringBuilder response = new StringBuilder(); String responseLine = null; while ((responseLine = br.readLine()) != null) { response.append(responseLine.trim()); } System.out.println(response.toString()); }

Jika respons dalam format JSON, gunakan parser JSON pihak ketiga seperti Jackson library, Gson , atau org.json untuk mengurai respons.

3. Kesimpulan

Pada artikel ini, kami melihat cara membuat permintaan POST dengan isi JSON menggunakan HttpURLConnection .

Seperti biasa, potongan kode yang relevan dapat ditemukan di GitHub