Home > Java > javaTutorial > body text

Using Apache HttpClient for HTTP requests in Java API development

PHPz
Release: 2023-06-18 09:27:18
Original
1558 people have browsed it

With the continuous development of the Internet, the HTTP protocol has become one of the cornerstones of modern network communication. In Java programming, by using the Apache HttpClient library, you can perform HTTP request operations very conveniently. This article will introduce how to use Apache HttpClient to make HTTP requests in Java API development.

  1. Preparation

Before you start, you need to download the Apache HttpClient library and add it as a dependency of the project. Apache HttpClient is an open source Java HTTP client library that can be referenced through tools such as Maven and Gradle.

The following is an example of using Maven to reference Apache HttpClient:

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

After introducing the library, you can start HTTP request operations.

  1. Send a GET request

Sending a GET request using HttpClient is very simple. The following is an example that demonstrates how to send a GET request through HttpClient and print out the response content:

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

The above code will send a GET request to Baidu and then output the response content. In this code, we create a CloseableHttpClient client instance, then create a GET request using the HttpGet object, and execute the request. The entity is obtained in the response, and then the entity is converted into a string and output.

  1. Send a POST request

When using HttpClient to send a POST request, you can choose to use a UrlEncodedFormEntity object or a MultipartEntityBuilder object to include the request parameters.

The following is an example of using the UrlEncodedFormEntity object:

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

The above code will send a POST request to Baidu and include the parameters in the request body. In this example, we use a UrlEncodedFormEntity object to contain the request parameters and set them as entities for the POST request. The entity is obtained in the response, and then the entity is converted into a string and output.

  1. Send files

When you need to send files, you should use the MultipartEntityBuilder object. Here is an example of an included file:

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

The above code will transfer a file named example.txt to localhost:8080. In this example, we use a MultipartEntityBuilder object and add the file as binary content. The entity is obtained in the response, and then the entity is converted into a string and output.

  1. Add header information when sending a request

Sometimes, we need to add header information to the request. The following is an example of adding header information:

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

The above code will send a GET request to Baidu and add a User-Agent header information. In this example, we use the HttpPost object to create a GET request and call the setHeader method to add header information. The entity is obtained in the response, and then the entity is converted into a string and output.

  1. Set the timeout when sending a request

When sending a request, you can also set the request timeout and response timeout. This prevents the client from blocking indefinitely while waiting for a response from the server. The following is an example of setting the timeout:

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

The above code will send a POST request to Baidu and set the connection timeout and response timeout to 5 seconds. In this example, we use the RequestConfig object and set the connection timeout and response timeout through the custom method. The entity is obtained in the response, and then the entity is converted into a string and output.

  1. Summary

The Apache HttpClient library provides many convenient APIs that allow Java developers to perform HTTP requests very easily. This article describes how to use Apache HttpClient to send GET requests, POST requests, requests that include files, requests that add header information, and requests that set timeouts. I hope this article can provide some help to Java developers using Apache HttpClient.

The above is the detailed content of Using Apache HttpClient for HTTP requests in Java API development. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template