Foretagelse af en JSON POST-anmodning med HttpURLConnection

1. Oversigt

I denne vejledning demonstrerer vi, hvordan man laver en JSON POST-anmodning ved hjælp af HttpURLforbindelse.

2. Opbygning af en JSON POST-anmodning med HttpURLforbindelse

2.1. Lave en URL Objekt

Lad os oprette en URL objekt med mål-URI-strengen, der accepterer JSON-data via HTTP POST-metoden:

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

2.2. Åbn en forbindelse

Fra ovenstående URL objekt, kan vi påberåbe sig openConnection metode til at få HttpURLforbindelse objekt.

Vi kan ikke instantiere HttpURLforbindelse direkte, da det er en abstrakt klasse:

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

2.3. Indstil anmodningsmetoden

For at sende en POST-anmodning bliver vi nødt til at indstille egenskaben for anmodningsmetode til POST:

con.setRequestMethod ("POST");

2.4. Indstil den anmodede indholdstype-headerparameter

Sæt "indholdstype" anmod header til “Ansøgning / json” at sende anmodningens indhold i JSON-form. Denne parameter skal indstilles for at sende anmodningens brødtekst i JSON-format.

Hvis dette ikke gøres, returnerer serveren HTTP-statuskode "400-dårlig anmodning".

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

Bemærk også, at vi har nævnt charset-kodning sammen med indholdstype. Dette er nyttigt, hvis kodning af anmodningens indhold er forskellig fra UTF-8-kodning, som er standardkodningen.

2.5. Indstil svarformatstype

Indstil "Acceptere" anmod header til “Ansøgning / json” for at læse svaret i det ønskede format:

con.setRequestProperty ("Accepter", "applikation / json");

2.6. Sørg for, at forbindelsen bruges til at sende indhold

Lad os aktivere for at sende anmodningsindhold URL-forbindelse objekt doOutput ejendom til rigtigt.

Ellers kan vi ikke skrive indhold til forbindelsesudgangsstrømmen:

con.setDoOutput (sand);

2.7. Opret anmodningsorganet

Efter oprettelse af en brugerdefineret JSON-streng:

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

Vi bliver nødt til at skrive det:

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

2.8. Læs svaret fra inputstrømmen

Få inputstrømmen til at læse svarets indhold. Husk at bruge prøve-med-ressourcer til at lukke svarstrømmen automatisk.

Læs hele svarets indhold, og udskriv den endelige svarstreng:

prøv (BufferedReader br = ny BufferedReader (ny InputStreamReader (con.getInputStream (), "utf-8"))) {StringBuilder svar = ny StringBuilder (); String responseLine = null; mens ((responsLine = br.readLine ())! = null) {respons.append (responsLine.trim ()); } System.out.println (respons.toString ()); }

Hvis svaret er i JSON-format, skal du bruge JSON-parsere fra tredjepart, f.eks Jackson bibliotek, Gson, eller org.json for at analysere svaret.

3. Konklusion

I denne artikel så vi, hvordan man laver en POST-anmodning med JSON-indholdsorgan ved hjælp af HttpURLforbindelse.

Som altid kan relevante kodestykker findes på GitHub