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