Java >> Java tutorial >  >> Tag >> Json

Lav en JSON POST-anmodning med HttpURLConnection

1. Oversigt

I dette selvstudie viser vi, hvordan man laver en JSON POST-anmodning ved hjælp af HttpURLConnection .

Yderligere læsning:

Udfør en simpel HTTP-anmodning i Java

En hurtig og praktisk guide til at udføre grundlæggende HTTP-anmodninger ved hjælp af Javas indbyggede HttpUrlConnection.Læs mere →

Godkendelse med HttpUrlConnection

Lær, hvordan du godkender HTTP-anmodninger ved hjælp af HttpUrlConnection.Læs mere →

Opret forbindelse gennem proxyservere i Core Java

Lær, hvordan du opretter forbindelse til proxy-servere i Java ved hjælp af systemegenskaber eller den mere fleksible Proxy-klasse. Læs mere →

2. Opbygning af en JSON POST-anmodning med HttpURLConnection

2.1. Opret en URL Objekt

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

URL url = new URL ("https://reqres.in/api/users");

2.2. Åbn en forbindelse

Fra ovenstående URL objekt, kan vi kalde openConnection metode til at få HttpURLConnection objekt.

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

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

2.3. Indstil anmodningsmetoden

For at sende en POST-anmodning skal vi indstille egenskaben for anmodningsmetode til POST:

con.setRequestMethod("POST");

2.4. Indstil parameteren Request Content-Type Header

Indstil "indholdstypen" anmodningshoved til "application/json" for at sende anmodningens indhold i JSON-form. Denne parameter skal indstilles for at sende anmodningens brødtekst i JSON-format.

Hvis det ikke gøres, returnerer serveren HTTP-statuskoden "400-bad request":

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

2.5. Indstil svarformattype

Indstil "Acceptér" anmodningshoved til "application/json" for at læse svaret i det ønskede format:

con.setRequestProperty("Accept", "application/json");

2.6. Sørg for, at forbindelsen vil blive brugt til at sende indhold

Lad os aktivere URLCnection for at sende anmodningsindhold objektets doOutput ejendom til sand .

Ellers vil vi ikke være i stand til at skrive indhold til forbindelsens outputstream:

con.setDoOutput(true);

2.7. Opret forespørgselsteksten

Efter oprettelse af en tilpasset JSON-streng:

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

Vi bliver nødt til at skrive det:

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

2.8. Læs svar fra inputstrøm

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

Læs hele svarindholdet igennem, og udskriv den endelige svarstreng:

try(BufferedReader br = new BufferedReader(
  new InputStreamReader(con.getInputStream(), "utf-8"))) {
    StringBuilder response = new StringBuilder();
    String responseLine = null;
    while ((responseLine = br.readLine()) != null) {
        response.append(responseLine.trim());
    }
    System.out.println(response.toString());
}

Hvis svaret er i JSON-format, skal du bruge tredjeparts JSON-parsere såsom Jackson bibliotek, Gson eller org.json for at analysere svaret.

3. Konklusion

I denne artikel lærte vi, hvordan man laver en POST-anmodning med JSON content body ved hjælp af HttpURLConnection .

Som altid kan de relevante kodestykker findes på GitHub


Java tag