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