Foreta en JSON POST-forespørsel med HttpURLConnection

1. Oversikt

I denne veiledningen vil vi demonstrere hvordan du lager en JSON POST-forespørsel ved hjelp av HttpURLConnection.

2. Bygg en JSON POST-forespørsel med HttpURLConnection

2.1. Lage en URL Gjenstand

La oss lage en URL objekt med mål-URI-strengen som godtar JSON-dataene via HTTP POST-metoden:

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

2.2. Åpne en tilkobling

Fra ovennevnte URL objekt, kan vi påberope oss openConnection metode for å få HttpURLConnection gjenstand.

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

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

2.3. Angi forespørselsmetoden

For å sende en POST-forespørsel må vi sette forespørselsmetodeegenskapen til POST:

con.setRequestMethod ("POST");

2.4. Angi forespørsel om innholdstype-parameter

Sett "innholdstype" be overskrift til “Applikasjon / json” å sende forespørselens innhold i JSON-skjema. Denne parameteren må stilles inn for å sende forespørselen i JSON-format.

Hvis dette ikke gjøres, returnerer serveren HTTP-statuskode "400-bad forespørsel".

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

Vær også oppmerksom på at vi har nevnt tegnsettkoding sammen med innholdstype. Dette er nyttig hvis forespørselens innholdskoding er forskjellig fra UTF-8-koding, som er standardkodingen.

2.5. Angi svarformatstype

Sett "Aksepterer" be overskrift til “Applikasjon / json” for å lese svaret i ønsket format:

con.setRequestProperty ("Godta", "applikasjon / json");

2.6. Sørg for at tilkoblingen blir brukt til å sende innhold

For å sende innhold om forespørsel, la oss aktivere URLtilkobling objektets doOutput eiendom til ekte.

Ellers kan vi ikke skrive innhold til tilkoblingsutgangsstrømmen:

con.setDoOutput (true);

2.7. Opprett forespørselsorganet

Etter å ha opprettet en tilpasset JSON-streng:

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

Vi trenger å skrive det:

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

2.8. Les svaret fra Input Stream

Få inngangsstrømmen for å lese svarinnholdet. Husk å bruke prøv-med-ressurser for å lukke svarstrømmen automatisk.

Les gjennom hele svarinnholdet, og skriv ut den endelige svarstrengen:

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

Hvis svaret er i JSON-format, bruk eventuelle tredjeparts JSON-parsere som Jackson bibliotek, Gson, eller org.json for å analysere responsen.

3. Konklusjon

I denne artikkelen så vi hvordan du lager en POST-forespørsel med JSON-innholdsdel ved hjelp av HttpURLConnection.

Som alltid kan du finne relevante kodebiter på GitHub