Maison  >  Article  >  Java  >  Utilisation d'Apache HttpClient pour les requêtes HTTP dans le développement d'API Java

Utilisation d'Apache HttpClient pour les requêtes HTTP dans le développement d'API Java

PHPz
PHPzoriginal
2023-06-18 09:27:181538parcourir

Avec le développement continu d'Internet, le protocole HTTP est devenu l'une des pierres angulaires de la communication réseau moderne. En programmation Java, en utilisant la bibliothèque Apache HttpClient, vous pouvez effectuer des opérations de requête HTTP très facilement. Cet article explique comment utiliser Apache HttpClient pour effectuer des requêtes HTTP dans le développement d'API Java.

  1. Préparation

Avant de commencer, vous devez télécharger la bibliothèque Apache HttpClient et l'ajouter en tant que dépendance du projet. Apache HttpClient est une bibliothèque client HTTP Java open source qui peut être référencée via des outils tels que Maven et Gradle.

Ce qui suit est un exemple d'utilisation de Maven pour référencer Apache HttpClient :

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

Après avoir présenté la bibliothèque, vous pouvez commencer à effectuer des opérations de requête HTTP.

  1. Envoyer une requête GET

Envoyer une requête GET à l'aide de HttpClient est très simple. Voici un exemple qui montre comment envoyer une requête GET via HttpClient et imprimer le contenu de la réponse :

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

Le code ci-dessus enverra une requête GET à Baidu, puis affichera le contenu de la réponse. Dans ce code, nous créons une instance client CloseableHttpClient, puis créons une requête GET à l'aide de l'objet HttpGet et exécutons la requête. L'entité est obtenue dans la réponse, puis l'entité est convertie en chaîne et en sortie.

  1. Envoyer une requête POST

Lorsque vous utilisez HttpClient pour envoyer une requête POST, vous pouvez choisir d'utiliser un objet UrlEncodedFormEntity ou un objet MultipartEntityBuilder pour inclure les paramètres de la requête.

Ce qui suit est un exemple d'utilisation de l'objet UrlEncodedFormEntity :

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

Le code ci-dessus enverra une requête POST à ​​Baidu et inclura les paramètres dans le corps de la requête. Dans cet exemple, nous utilisons un objet UrlEncodedFormEntity pour contenir les paramètres de requête et les définir comme entités pour la requête POST. L'entité est obtenue dans la réponse puis convertie en chaîne pour la sortie.

  1. Envoyer des fichiers

Lorsque vous devez envoyer des fichiers, vous devez utiliser l'objet MultipartEntityBuilder. Voici un exemple de fichier inclus :

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

Le code ci-dessus transférera un fichier nommé example.txt vers localhost:8080. Dans cet exemple, nous utilisons un objet MultipartEntityBuilder et ajoutons le fichier en tant que contenu binaire. L'entité est obtenue dans la réponse puis convertie en chaîne pour la sortie.

  1. Ajouter des informations d'en-tête lors de l'envoi d'une demande

Parfois, nous devons ajouter des informations d'en-tête à la demande. Voici un exemple d'ajout d'informations d'en-tête :

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

Le code ci-dessus enverra une requête GET à Baidu et ajoutera des informations d'en-tête User-Agent. Dans cet exemple, nous utilisons l'objet HttpPost pour créer une requête GET et appelons la méthode setHeader pour ajouter des informations d'en-tête. L'entité est obtenue dans la réponse, puis l'entité est convertie en chaîne et en sortie.

  1. Définir le délai d'expiration lors de l'envoi d'une demande

Lors de l'envoi d'une demande, vous pouvez également définir le délai d'expiration de la demande et le délai d'expiration de la réponse. Cela évite que le client bloque indéfiniment en attendant une réponse du serveur. Voici un exemple de définition d'un délai d'attente :

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

Le code ci-dessus enverra une requête POST à ​​Baidu et définira le délai d'expiration de connexion et le délai d'attente de réponse à 5 secondes. Dans cet exemple, nous utilisons l'objet RequestConfig et définissons le délai d'expiration de connexion et le délai d'expiration de réponse via la méthode personnalisée. L'entité est obtenue dans la réponse puis convertie en chaîne pour la sortie.

  1. Résumé

La bibliothèque Apache HttpClient fournit de nombreuses API pratiques qui permettent aux développeurs Java d'effectuer des requêtes HTTP très facilement. Cet article décrit comment utiliser Apache HttpClient pour envoyer des requêtes GET, des requêtes POST, des requêtes incluant des fichiers, des requêtes ajoutant des informations d'en-tête et des requêtes définissant des délais d'attente. J'espère que cet article pourra fournir de l'aide aux développeurs Java utilisant Apache HttpClient.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn