Heim > Java > javaLernprogramm > Verwendung von Apache HttpClient für HTTP-Anfragen in der Java-API-Entwicklung

Verwendung von Apache HttpClient für HTTP-Anfragen in der Java-API-Entwicklung

PHPz
Freigeben: 2023-06-18 09:27:18
Original
1589 Leute haben es durchsucht

Mit der kontinuierlichen Weiterentwicklung des Internets ist das HTTP-Protokoll zu einem der Eckpfeiler der modernen Netzwerkkommunikation geworden. Bei der Java-Programmierung können Sie mithilfe der Apache HttpClient-Bibliothek sehr bequem HTTP-Anforderungsvorgänge ausführen. In diesem Artikel wird erläutert, wie Sie Apache HttpClient verwenden, um HTTP-Anfragen in der Java-API-Entwicklung zu stellen.

  1. Vorbereitung

Bevor Sie beginnen, müssen Sie die Apache HttpClient-Bibliothek herunterladen und als Abhängigkeit des Projekts hinzufügen. Apache HttpClient ist eine Open-Source-Java-HTTP-Clientbibliothek, auf die über Tools wie Maven und Gradle verwiesen werden kann.

Das Folgende ist ein Beispiel für die Verwendung von Maven zum Referenzieren von Apache HttpClient:

<dependencies>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.13</version>
    </dependency>
</dependencies>
Nach dem Login kopieren

Nach der Einführung der Bibliothek können Sie mit der Durchführung von HTTP-Anforderungsvorgängen beginnen.

  1. Senden einer GET-Anfrage

Das Senden einer GET-Anfrage mit HttpClient ist sehr einfach. Das folgende Beispiel zeigt, wie eine GET-Anfrage über HttpClient gesendet und der Antwortinhalt ausgedruckt wird:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("https://www.baidu.com");
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}
Nach dem Login kopieren

Der obige Code sendet eine GET-Anfrage an Baidu und gibt dann den Antwortinhalt aus. In diesem Code erstellen wir eine CloseableHttpClient-Clientinstanz, erstellen dann eine GET-Anfrage mit dem HttpGet-Objekt und führen die Anfrage aus. Die Entität wird in der Antwort abgerufen und dann zur Ausgabe in einen String umgewandelt.

  1. POST-Anfrage senden

Wenn Sie HttpClient zum Senden einer POST-Anfrage verwenden, können Sie wählen, ob Sie ein UrlEncodedFormEntity-Objekt oder ein MultipartEntityBuilder-Objekt verwenden möchten, um die Anforderungsparameter einzuschließen.

Das Folgende ist ein Beispiel für die Verwendung des UrlEncodedFormEntity-Objekts:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.baidu.com");
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username", "johndoe"));
params.add(new BasicNameValuePair("password", "password123"));
try {
    httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}
Nach dem Login kopieren

Der obige Code sendet eine POST-Anfrage an Baidu und fügt die Parameter in den Anfragetext ein. In diesem Beispiel verwenden wir ein UrlEncodedFormEntity-Objekt, um die Anforderungsparameter zu enthalten und sie als Entitäten für die POST-Anfrage festzulegen. Die Entität wird in der Antwort abgerufen und dann zur Ausgabe in einen String umgewandelt.

  1. Dateien senden

Wenn Sie Dateien senden müssen, sollten Sie das MultipartEntityBuilder-Objekt verwenden. Hier ist ein Beispiel für eine enthaltene Datei:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("http://localhost:8080/upload");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("file", new File("example.txt"));
httpPost.setEntity(builder.build());
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}
Nach dem Login kopieren

Der obige Code überträgt eine Datei mit dem Namen example.txt an localhost:8080. In diesem Beispiel verwenden wir ein MultipartEntityBuilder-Objekt und fügen die Datei als binären Inhalt hinzu. Die Entität wird in der Antwort abgerufen und dann zur Ausgabe in einen String umgewandelt.

  1. Fügen Sie beim Senden einer Anfrage Header-Informationen hinzu

Manchmal müssen wir der Anfrage Header-Informationen hinzufügen. Hier ist ein Beispiel für das Hinzufügen von Header-Informationen:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.baidu.com");
httpPost.setHeader("User-Agent", "Mozilla/5.0");
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}
Nach dem Login kopieren

Der obige Code sendet eine GET-Anfrage an Baidu und fügt User-Agent-Header-Informationen hinzu. In diesem Beispiel verwenden wir das HttpPost-Objekt, um eine GET-Anfrage zu erstellen und rufen die setHeader-Methode auf, um Header-Informationen hinzuzufügen. Die Entität wird in der Antwort abgerufen und dann in eine Zeichenfolge umgewandelt und ausgegeben.

  1. Legen Sie das Zeitlimit beim Senden einer Anfrage fest.

Beim Senden einer Anfrage können Sie auch das Zeitlimit für die Anfrage und das Antwort-Timeout festlegen. Dadurch wird verhindert, dass der Client auf unbestimmte Zeit blockiert, während er auf eine Antwort vom Server wartet. Hier ist ein Beispiel für das Festlegen eines Zeitlimits:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.baidu.com");
RequestConfig requestConfig = RequestConfig.custom()
    .setConnectTimeout(5000) // 连接超时时间
    .setSocketTimeout(5000) // 响应超时时间
    .build();
httpPost.setConfig(requestConfig);
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);    
    }
} catch (IOException e) {
    e.printStackTrace();
}
Nach dem Login kopieren

Der obige Code sendet eine POST-Anfrage an Baidu und setzt das Verbindungszeitlimit und das Antwortzeitlimit auf 5 Sekunden. In diesem Beispiel verwenden wir das RequestConfig-Objekt und legen das Verbindungszeitlimit und das Antwortzeitlimit über die benutzerdefinierte Methode fest. Die Entität wird in der Antwort abgerufen und dann zur Ausgabe in einen String umgewandelt.

  1. Zusammenfassung

Die Apache HttpClient-Bibliothek bietet viele praktische APIs, die es Java-Entwicklern ermöglichen, HTTP-Anfragen sehr einfach durchzuführen. In diesem Artikel wird beschrieben, wie Sie mit Apache HttpClient GET-Anfragen, POST-Anfragen, Anfragen mit Dateien, Anfragen zum Hinzufügen von Header-Informationen und Anfragen zum Festlegen von Zeitüberschreitungen senden. Ich hoffe, dass dieser Artikel Java-Entwicklern, die Apache HttpClient verwenden, etwas Hilfe bieten kann.

Das obige ist der detaillierte Inhalt vonVerwendung von Apache HttpClient für HTTP-Anfragen in der Java-API-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage