Zadávanie požiadavky JSON POST pomocou protokolu HttpURLConnection
1. Prehľad
V tomto tutoriáli si ukážeme, ako vytvoriť požiadavku JSON POST pomocou HttpURLConnection.
2. Vytvorenie požiadavky JSON POST s HttpURLConnection
2.1. Vytvor URL Objekt
Vytvorme a URL objekt s cieľovým reťazcom URI, ktorý prijíma údaje JSON pomocou metódy HTTP POST:
URL url = nová adresa URL ("//reqres.in/api/users");
2.2. Otvorte pripojenie
Z vyššie uvedeného URL objekt, môžeme vyvolať openConnection metóda na získanie HttpURLConnection objekt.
Nemôžeme to urobiť okamžite HttpURLConnection priamo, pretože je to abstraktná trieda:
HttpURLConnection con = (HttpURLConnection) url.openConnection ();
2.3. Nastavte metódu žiadosti
Ak chcete odoslať požiadavku POST, budeme musieť nastaviť vlastnosť metódy žiadosti na POST:
con.setRequestMethod ("POST");
2.4. Nastavte parameter Hlavička požiadavky typu obsahu
Nastaviť "Druh obsahu" hlavička žiadosti do „Application / json“ na odoslanie obsahu žiadosti vo formáte JSON. Tento parameter musí byť nastavený na odoslanie tela žiadosti vo formáte JSON.
Ak to neurobíte, server vráti stavový kód HTTP „400-zlá požiadavka“.
con.setRequestProperty ("Content-Type", "application / json; utf-8");
Upozorňujeme, že sme spolu s typom obsahu spomenuli aj kódovanie charsetu. To je užitočné, ak sa kódovanie obsahu žiadosti líši od kódovania UTF-8, čo je predvolené kódovanie.
2.5. Nastavte typ formátu odpovede
Nastaviť "Súhlasiť" hlavička žiadosti do „Application / json“ prečítať odpoveď v požadovanom formáte:
con.setRequestProperty ("Prijať", "aplikácia / json");
2.6. Zaistite, aby sa pripojenie použilo na odosielanie obsahu
Ak chcete odoslať obsah žiadosti, povoľte URLConnection objektu doOutput majetok do pravda.
V opačnom prípade nebudeme schopní zapísať obsah do výstupného prúdu pripojenia:
con.setDoOutput (true);
2.7. Vytvorte telo žiadosti
Po vytvorení vlastného reťazca JSON:
Reťazec jsonInputString = "{" name ":" Upendra "," job ":" Programátor "}";
Potrebovali by sme to napísať:
try (OutputStream os = con.getOutputStream ()) {byte [] vstup = jsonInputString.getBytes ("utf-8"); os.write (input, 0, input.length); }
2.8. Prečítajte si odpoveď zo vstupného toku
Získajte vstupný prúd na čítanie obsahu odpovede. Nezabudnite použiť pokus o zdroje na automatické zatvorenie streamu odpovedí.
Prečítajte si celý obsah odpovede a vytlačte posledný reťazec odpovede:
try (BufferedReader br = new BufferedReader (new InputStreamReader (con.getInputStream (), "utf-8")))) {StringBuilder response = new StringBuilder (); Reťazec responseLine = null; while ((responseLine = br.readLine ())! = null) {response.append (responseLine.trim ()); } System.out.println (response.toString ()); }
Ak je odpoveď vo formáte JSON, použite akékoľvek analyzátory JSON tretích strán, napríklad Jackson knižnica, Gsonalebo org.json analyzovať odpoveď.
3. Záver
V tomto článku sme videli, ako vytvoriť žiadosť POST pomocou tela obsahu JSON pomocou HttpURLConnection.
Príslušné útržky kódu ako vždy nájdete na GitHub