JSON POST kérés készítése HttpURLConnection használatával
1. Áttekintés
Ebben az oktatóanyagban bemutatjuk, hogyan lehet egy JSON POST kérést felhasználni HttpURLConnection.
2. JSON POST kérés készítése a HttpURLConnection
2.1. Hozzon létre egy URL Tárgy
Hozzunk létre egy URL objektum a cél URI karakterlánccal, amely elfogadja a JSON adatokat a HTTP POST módszerrel:
URL url = új URL ("//reqres.in/api/users");
2.2. Nyisson meg egy kapcsolatot
A fentiekből URL objektumot, meghívhatjuk a openConnection módszer a HttpURLConnection tárgy.
Nem tudunk példányt tenni HttpURLConnection közvetlenül, mivel ez egy absztrakt osztály:
HttpURLConnection con = (HttpURLConnection) url.openConnection ();
2.3. Állítsa be a Kérés módszerét
POST kérés küldéséhez a kérés metódus tulajdonságát POST-ra kell állítanunk:
con.setRequestMethod ("POST");
2.4. Állítsa be a Request Content-Type fejlécparamétert
Készlet "tartalom típus" fejléc kérése ide: „Alkalmazás / json” hogy a kérelem tartalmát JSON formában küldje el. Ezt a paramétert úgy kell beállítani, hogy a kérelem törzsét JSON formátumban küldje el.
Ennek elmulasztása esetén a szerver a „400-rossz kérés” HTTP-állapotkódot adja vissza.
con.setRequestProperty ("Tartalom-típus", "alkalmazás / json; utf-8");
Ezenkívül vegye figyelembe, hogy a karakterkészlet kódolását a tartalom típusával együtt említettük. Ez akkor hasznos, ha a kérelem tartalmi kódolása eltér az UTF-8 kódolástól, amely az alapértelmezett kódolás.
2.5. Állítsa be a válasz formátum típusát
Állítsa be a "Elfogad" fejléc kérése ide: „Alkalmazás / json” a választ a kívánt formátumban olvassa el:
con.setRequestProperty ("Elfogadás", "alkalmazás / json");
2.6. Győződjön meg arról, hogy a kapcsolatot tartalom küldésére használják
Kérelem tartalmának elküldéséhez engedélyezzük a URLConnection objektumé doOutput tulajdonhoz igaz.
Ellenkező esetben nem fogunk tudni tartalmat írni a kapcsolat kimeneti adatfolyamába:
con.setDoOutput (true);
2.7. Hozza létre a kérelem törzsét
Egyéni JSON karakterlánc létrehozása után:
Karakterlánc jsonInputString = "{" name ":" Upendra "," job ":" Programmer "}";
Meg kell írnunk:
próbáld ki (OutputStream os = con.getOutputStream ()) {byte [] input = jsonInputString.getBytes ("utf-8"); os.write (bemenet, 0, bemenet.hossz); }
2.8. Olvassa el az Input Stream válaszát
Szerezze be a bemeneti adatfolyamot a válasz tartalmának elolvasásához. Ne feledje, hogy a try-with-resources segítségével automatikusan lezárja a válaszfolyamot.
Olvassa el a válasz teljes tartalmát, és nyomtassa ki a végső válaszláncot:
try (BufferedReader br = new BufferedReader (új InputStreamReader (con.getInputStream (), "utf-8"))) {StringBuilder válasz = új StringBuilder (); String responseLine = null; while ((responseLine = br.readLine ())! = null) {response.append (responseLine.trim ()); } System.out.println (response.toString ()); }
Ha a válasz JSON formátumú, használjon bármilyen harmadik féltől származó JSON-elemzőt, mint pl Jackson könyvtár, Gson, vagy org.json hogy elemezze a választ.
3. Következtetés
Ebben a cikkben azt láttuk, hogyan lehet POST-kérelmet benyújtani a JSON tartalomtest használatával HttpURLConnection.
Mint mindig, a releváns kódrészletek megtalálhatók a GitHubon