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