Izrada JSON POST zahtjeva sa HttpURLConnection

1. Pregled

U ovom uputstvu pokazat ćemo kako napraviti JSON POST zahtjev pomoću HttpURLConnection.

2. Izrada JSON POST zahtjeva sa HttpURLConnection

2.1. Stvoriti URL Objekt

Stvorimo a URL objekt s ciljnim URI nizom koji prihvaća JSON podatke putem HTTP POST metode:

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

2.2. Otvorite vezu

Iz navedenog URL objekt, možemo se pozvati na openConnection metoda za dobivanje HttpURLConnection objekt.

Ne možemo instancirati HttpURLConnection izravno, jer je to apstraktna klasa:

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

2.3. Postavite način zahtjeva

Da bismo poslali POST zahtjev, morat ćemo postaviti svojstvo metode zahtjeva na POST:

con.setRequestMethod ("POST");

2.4. Postavite parametar zaglavlja vrste zahtjeva

Postavi “Vrsta sadržaja” zahtjev zaglavlja za “Aplikacija / json” za slanje sadržaja zahtjeva u JSON obliku. Ovaj parametar mora se postaviti za slanje tijela zahtjeva u JSON formatu.

Ako to ne učini, poslužitelj vraća HTTP statusni kod "400-loš zahtjev".

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

Također imajte na umu da smo spomenuli kodiranje znakova zajedno s vrstom sadržaja. To je korisno ako se kodiranje sadržaja zahtjeva razlikuje od UTF-8 kodiranja, koje je zadano kodiranje.

2.5. Postavite vrstu formata odgovora

Postavi "Prihvatiti" zahtjev zaglavlja za “Aplikacija / json” da biste pročitali odgovor u željenom formatu:

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

2.6. Osigurajte da će se veza koristiti za slanje sadržaja

Da bismo poslali sadržaj zahtjeva, omogućimo URLConnection objekt doOutput svojstvo da pravi.

U suprotnom, nećemo moći zapisivati ​​sadržaj u izlazni tok veze:

con.setDoOutput (true);

2.7. Stvorite tijelo zahtjeva

Nakon stvaranja prilagođenog JSON niza:

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

Morali bismo to napisati:

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

2.8. Pročitajte odgovor iz ulaznog toka

Nabavite ulazni tok za čitanje sadržaja odgovora. Ne zaboravite upotrijebiti try-with-resources za automatsko zatvaranje toka odgovora.

Pročitajte cijeli sadržaj odgovora i ispišite konačni niz odgovora:

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

Ako je odgovor u JSON formatu, upotrijebite bilo koji drugi JSON-ov parser kao što je Jackson knjižnica, Gson, ili org.json da raščlanimo odgovor.

3. Zaključak

U ovom smo članku vidjeli kako izvršiti POST zahtjev s JSON tijelom sadržaja pomoću HttpURLConnection.

Kao i uvijek, relevantni isječci koda mogu se naći na GitHubu