HttpClient: HTTP-Anfragen in Java Anwendungen leicht gemacht und erklärt

Entdecken Sie, wie Apache HttpClient Ihre Java-Anwendungen mit müheloser HTTP-Kommunikation verbessert. Unser Blogbeitrag führt Sie Schritt für Schritt durch die Verwendung von GET- und POST-Anfragen, ergänzt durch praxisorientierte Beispiele. Lernen Sie nicht nur, wie Sie schnell und effizient HTTP-Anfragen direkt aus Ihrem Java-Code senden können, sondern auch, wie Sie dabei häufige Fehler vermeiden und die Leistung Ihrer Anwendung optimieren.

Apache HttpClient

Apache HttpClient wird sehr häufig verwendet, um HTTP-Anfragen direkt aus einem Java-Programm zu senden. Die Verwendung von Maven macht die Einbindung von Apache HttpClient in Ihr Projekt zum Kinderspiel. Fügen Sie einfach die folgenden Abhängigkeiten hinzu:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.4</version>
</dependency>

Wenn Sie kein Maven verwenden, fügen Sie die folgenden JAR-Dateien zum Projektpfad hinzu:

  • httpclient-4.4.jar
  • httpcore-4.4.jar
  • commons-logging-1.2.jar
  • commons-codec-1.9.jar

Verwendung von Apache HttpClient

Folgende Schritte sind notwendig, um Apache HttpClient für GET- und POST-Anfragen zu verwenden:

  1. Erstellen Sie eine Instanz von CloseableHttpClient mit Hilfe der Hilfsklasse HttpClients.
  2. Erstellen Sie eine Instanz von HttpGet oder HttpPost basierend auf dem Typ der HTTP-Anfrage.
  3. Fügen Sie erforderliche Header wie User-Agent, Accept-Encoding usw. hinzu.
  4. Für POST-Anfragen: Erstellen Sie eine Liste von NameValuePair und fügen Sie alle Formparameter hinzu. Setzen Sie diese dann in die HttpPost-Entität.
  5. Erhalten Sie CloseableHttpResponse, indem Sie die HttpGet– oder HttpPost-Anfrage ausführen.
  6. Holen Sie sich die erforderlichen Details wie Statuscode, Fehlerinformationen, Antwort-HTML usw. von der Antwort.
  7. Schließen Sie schließlich die Apache HttpClient-Ressource.

Beispielprogramm

Hier ist das endgültige Programm, das zeigt, wie Sie Apache HttpClient verwenden, um HTTP-GET- und POST-Anfragen in einem Java-Programm selbst auszuführen:

package com.journaldev.utils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;

public class ApacheHttpClientExample {

    private static final String USER_AGENT = "Mozilla/5.0";

    private static final String GET_URL = "https://localhost:9090/SpringMVCExample";

    private static final String POST_URL = "https://localhost:9090/SpringMVCExample/home";

    public static void main(String[] args) throws IOException {
        sendGET();
        System.out.println("GET DONE");
        sendPOST();
        System.out.println("POST DONE");
    }

    private static void sendGET() throws IOException {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(GET_URL);
        httpGet.addHeader("User-Agent", USER_AGENT);
        CloseableHttpResponse httpResponse = httpClient.execute(httpGet);

        System.out.println("GET Response Status:: "
                + httpResponse.getStatusLine().getStatusCode());

        BufferedReader reader = new BufferedReader(new InputStreamReader(
                httpResponse.getEntity().getContent()));

        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = reader.readLine()) != null) {
            response.append(inputLine);
        }
        reader.close();

        // print result
        System.out.println(response.toString());
        httpClient.close();
    }

    private static void sendPOST() throws IOException {

        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(POST_URL);
        httpPost.addHeader("User-Agent", USER_AGENT);

        List urlParameters = new ArrayList();
        urlParameters.add(new BasicNameValuePair("userName", "Pankaj Kumar"));

        HttpEntity postParams = new UrlEncodedFormEntity(urlParameters);
        httpPost.setEntity(postParams);

        CloseableHttpResponse httpResponse = httpClient.execute(httpPost);

        System.out.println("POST Response Status:: "
                + httpResponse.getStatusLine().getStatusCode());

        BufferedReader reader = new BufferedReader(new InputStreamReader(
                httpResponse.getEntity().getContent()));

        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = reader.readLine()) != null) {
            response.append(inputLine);
        }
        reader.close();

        // print result
        System.out.println(response.toString());
        httpClient.close();
    }

}

Ergebnis

Wenn das Programm ausgeführt wird, erhalten Sie ähnliches HTML wie im Browser:

GET Response Status:: 200
<html><head><title>Home</title></head><body><h1>Hello world!</h1><P>The time on the server is March 7, 2015 1:01:22 AM IST.</P></body></html>
GET DONE
POST Response Status:: 200
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>User Home Page</title></head><body><h3>Hi Pankaj Kumar</h3></body></html>
POST DONE

Fazit

Das war unser Leitfaden zum Beispiel mit Apache HttpClient. Es enthält viele nützliche Methoden, die Sie verwenden können. Ich empfehle Ihnen daher, sie für ein besseres Verständnis auszuprobieren.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: