Erstellen einer JSON-POST-Anforderung mit HttpURLConnection

1. Übersicht

In diesem Tutorial wird gezeigt, wie Sie mit HttpURLConnection eine JSON-POST-Anforderung erstellen .

2. Erstellen einer JSON-POST-Anforderung mit HttpURLConnection

2.1. Erstellen Sie ein URL- Objekt

Erstellen wir ein URL- Objekt mit der Ziel-URI-Zeichenfolge, das die JSON-Daten über die HTTP-POST-Methode akzeptiert:

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

2.2. Öffnen Sie eine Verbindung

Über das obige URL- Objekt können wir die openConnection- Methode aufrufen , um das HttpURLConnection- Objekt abzurufen .

Wir können HttpURLConnection nicht direkt instanziieren , da es sich um eine abstrakte Klasse handelt:

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

2.3. Legen Sie die Anforderungsmethode fest

Um eine POST-Anfrage zu senden, müssen wir die Eigenschaft der Anforderungsmethode auf POST setzen:

con.setRequestMethod("POST");

2.4. Legen Sie den Header-Parameter Request Content-Type fest

Setzen Sie den Anforderungsheader "content-type" auf "application / json" , um den Anforderungsinhalt in JSON-Form zu senden. Dieser Parameter muss festgelegt werden, um den Anforderungshauptteil im JSON-Format zu senden.

Andernfalls gibt der Server den HTTP-Statuscode "400-Bad Request" zurück.

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

Beachten Sie außerdem, dass wir die Zeichensatzcodierung zusammen mit dem Inhaltstyp erwähnt haben. Dies ist nützlich, wenn sich die Codierung des Anforderungsinhalts von der UTF-8-Codierung unterscheidet, bei der es sich um die Standardcodierung handelt.

2.5. Legen Sie den Antwortformattyp fest

Setzen Sie den Anforderungsheader "Akzeptieren" auf "application / json" , um die Antwort im gewünschten Format zu lesen:

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

2.6. Stellen Sie sicher, dass die Verbindung zum Senden von Inhalten verwendet wird

Aktivieren Sie zum Senden von Anforderungsinhalten die doOutput- Eigenschaft des URLConnection- Objekts auf true .

Andernfalls können wir keinen Inhalt in den Verbindungsausgabestream schreiben:

con.setDoOutput(true);

2.7. Erstellen Sie den Anforderungshauptteil

Nach dem Erstellen eines benutzerdefinierten JSON-Strings:

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

Wir müssten es schreiben:

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

2.8. Lesen Sie die Antwort vom Eingabestream

Holen Sie sich den Eingabestream, um den Antwortinhalt zu lesen. Denken Sie daran, Try-with-Resources zu verwenden, um den Antwortstrom automatisch zu schließen.

Lesen Sie den gesamten Antwortinhalt durch und drucken Sie die endgültige Antwortzeichenfolge:

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()); }

Wenn die Antwort im JSON-Format vorliegt , verwenden Sie JSON-Parser von Drittanbietern wie Jackson Library, Gson oder org.json , um die Antwort zu analysieren.

3. Fazit

In diesem Artikel haben wir gesehen, wie mit HttpURLConnection eine POST-Anforderung mit JSON-Inhaltskörper erstellt wird .

Relevante Codefragmente finden Sie wie immer auf GitHub