Java通过HttpClient进行HTTP请求的代码详解

 更新时间:2023年05月19日 08:51:50   作者:MerkleJqueryRu  
Apache HttpClient是一个功能强大且广泛使用的Java库,它提供了方便的方法来执行HTTP请求并处理响应。本文将介绍如何使用HttpClient库进行HTTP请求,包括GET请求、POST请求、添加参数和请求体、设置请求头等操作,需要的朋友可以参考下

引言: 在现代的网络应用程序中,进行HTTP请求是一项常见的任务。Apache HttpClient是一个功能强大且广泛使用的Java库,它提供了方便的方法来执行HTTP请求并处理响应。本文将介绍如何使用HttpClient库进行HTTP请求,包括GET请求、POST请求、添加参数和请求体、设置请求头等操作。

HttpClient简介: HttpClient是一个开源的Java库,用于处理HTTP通信。它提供了各种类和方法,使得执行HTTP请求变得简单而直观。HttpClient不仅支持基本的HTTP协议功能,还提供了更高级的功能,如连接管理、cookie管理、代理设置等。

导入HttpClient库

在使用HttpClient之前,需要在项目中导入HttpClient库。可以通过在Maven项目的pom.xml文件中添加以下依赖项来实现:

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

发起GET请求

GET请求是获取服务器资源的一种常见方式。下面是使用HttpClient进行GET请求的示例代码:

HttpGet httpGet = new HttpGet("http://httpbin.org/get");
CloseableHttpResponse response = client.execute(httpGet);
System.out.println(EntityUtils.toString(response.getEntity()));

在上述代码中,我们创建了一个HttpGet对象,并传入要请求的URL。然后使用HttpClient的execute方法发送请求并获取响应。最后,通过EntityUtils将响应内容转换为字符串并进行输出。

发起POST请求

POST请求用于向服务器提交数据。下面是使用HttpClient进行POST请求的示例代码:

HttpPost httpPost = new HttpPost("http://httpbin.org/post");
CloseableHttpResponse response = client.execute(httpPost);
System.out.println(EntityUtils.toString(response.getEntity()));

与GET请求相比,POST请求的代码几乎相同。只需将HttpGet替换为HttpPost即可。

添加请求参数

有时候我们需要在请求中添加参数。使用HttpClient的URIBuilder类可以方便地构建带有参数的URL。下面是一个示例:

URIBuilder builder = new URIBuilder("http://httpbin.org/post");
builder.addParameter("name", "Ru");
builder.addParameter("age", "18");
URI uri = builder.build();
HttpPost httpPost = new HttpPost(uri);
CloseableHttpResponse response = client.execute(httpPost);
System.out.println(EntityUtils.toString(response.getEntity()));

在上述代码中,我们创建了一个URIBuilder对象,并使用addParameter方法添加了两个参数。然后通过build方法生成最终的URI,将其传递给HttpPost对象进行请求。

设置请求体

有时候我们需要在POST请求中添加请求体,通常使用JSON格式进行数据传输。下面是一个示例:

HttpPost httpPost = new HttpPost("http://httpbin.org/post");  
String jsonBody = "{"name": "Ru", "age": 18}";  
// 设置请求头部信息  
httpPost.setHeader("Content-Type", "application/json");  
  
// 设置请求体  
StringEntity requestEntity = new StringEntity(jsonBody, ContentType.APPLICATION_JSON);  
httpPost.setEntity(requestEntity);  
CloseableHttpResponse response = client.execute(httpPost);  
HttpEntity responseEntity = response.getEntity();  
if (responseEntity != null) {  
    String responseBody = EntityUtils.toString(responseEntity);  
    System.out.println(responseBody);  
}

在上述代码中,我们首先设置了请求的Content-Type为application/json,然后创建了一个StringEntity对象来封装请求体数据。将其设置为HttpPost对象的实体,并执行请求。最后,通过EntityUtils将响应体转换为字符串并进行输出。

设置请求头

有时候我们需要在请求中添加自定义的请求头信息,如User-Agent、Authorization等。下面是一个示例:

HttpGet httpGet = new HttpGet("http://httpbin.org/get");
httpGet.setHeader("User-Agent", "MyHttpClient/1.0");
httpGet.setHeader("Authorization", "Bearer my_token");
CloseableHttpResponse response = client.execute(httpGet);
System.out.println(EntityUtils.toString(response.getEntity()));

在上述代码中,我们使用setHeader方法设置了两个自定义的请求头信息,然后执行GET请求并输出响应结果。

完整demo:

package org.example.TestMaven;
​
import org.apache.http.HttpEntity;
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.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
​
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
​
public class HttpClientDemo {
    static CloseableHttpClient client = HttpClients.createDefault();
​
    public static void main(String[] args) throws IOException, URISyntaxException {
​
//        httpGetDemo();
//        httpPostDemo();
//        httpParamsDemo();
//        httpBodyDemo();
        httpHeaderDemo();
    }
    public static void httpGetDemo() throws IOException {
        HttpGet httpGet = new HttpGet("http://httpbin.org/get");
        CloseableHttpResponse response = client.execute(httpGet);
        System.out.println(EntityUtils.toString(response.getEntity()));
    }
​
    public static void httpPostDemo() throws IOException {
        HttpPost httpPost = new HttpPost("http://httpbin.org/post");
        CloseableHttpResponse response = client.execute(httpPost);
        System.out.println(EntityUtils.toString(response.getEntity()));
    }
​
    public static void httpParamsDemo() throws IOException, URISyntaxException {
        URIBuilder builder = new URIBuilder("http://httpbin.org/post");
        builder.addParameter("name", "Ru");
        builder.addParameter("age", "18");
        URI uri = builder.build();
        HttpPost httpPost = new HttpPost(uri);
        CloseableHttpResponse response = client.execute(httpPost);
        System.out.println(EntityUtils.toString(response.getEntity()));
    }
​
    public static void httpBodyDemo() throws IOException {
        HttpPost httpPost = new HttpPost("http://httpbin.org/post");
        String jsonBody = "{"name": "Ru", "age": 18}";
        // 设置请求头部信息
        httpPost.setHeader("Content-Type", "application/json");
​
        // 设置请求体
        StringEntity requestEntity = new StringEntity(jsonBody, ContentType.APPLICATION_JSON);
        httpPost.setEntity(requestEntity);
        CloseableHttpResponse response = client.execute(httpPost);
        HttpEntity responseEntity = response.getEntity();
        if (responseEntity != null) {
            String responseBody = EntityUtils.toString(responseEntity);
            System.out.println(responseBody);
        }
    }
​
    public static void httpHeaderDemo() throws IOException {
        HttpGet httpGet = new HttpGet("http://httpbin.org/get");
        httpGet.setHeader("User-Agent", "MyHttpClient/1.0");
        httpGet.setHeader("Authorization", "Bearer my_token");
        CloseableHttpResponse response = client.execute(httpGet);
        System.out.println(EntityUtils.toString(response.getEntity()));
    }
​
}
​

结论: 本文介绍了如何使用HttpClient库进行HTTP请求的常见操作,包括GET请求、POST请求、添加请求参数和请求体、设置请求头等。通过使用HttpClient,我们可以轻松地与服务器进行通信并处理响应数据。希望本文对你理解和使用HttpClient有所帮助!

到此这篇关于Java通过HttpClient进行HTTP请求的代码详解的文章就介绍到这了,更多相关Java HttpClient进行HTTP请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Jmeter配置代理实现录制过程图解

    Jmeter配置代理实现录制过程图解

    这篇文章主要介绍了Jmeter配置代理实现录制过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java将Word、Excel、PDF和PPT转换为OFD格式的详细步骤

    Java将Word、Excel、PDF和PPT转换为OFD格式的详细步骤

    OFD是一种依据中国国家标准制定的电子文档格式,广泛应用于政务办公、金融服务、法律事务及档案管理等领域,本文将介绍如何使用 Java 将 Word、Excel、PDF 和 PowerPoint 文档转换为 OFD 格式,含详细实现步骤介绍与代码示例,需要的朋友可以参考下
    2025-09-09
  • SpringBoot中整合MyBatis-Plus的方法示例

    SpringBoot中整合MyBatis-Plus的方法示例

    这篇文章主要介绍了SpringBoot中整合MyBatis-Plus的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java开发反射机制的实战经验总结

    Java开发反射机制的实战经验总结

    反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接,但是反射使用不当会成本很高,这篇文章主要给大家介绍了关于Java开发反射机制的相关资料,需要的朋友可以参考下
    2021-07-07
  • Java 中 Date 与 Calendar 之间的编辑与转换实例详解

    Java 中 Date 与 Calendar 之间的编辑与转换实例详解

    这篇文章主要介绍了Java 中 Date 与 Calendar 之间的编辑与转换 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • springboot整合mybatis中的问题及出现的一些问题小结

    springboot整合mybatis中的问题及出现的一些问题小结

    这篇文章主要介绍了springboot整合mybatis中的问题及出现的一些问题小结,本文给出了解决方案,需要的朋友可以参考下
    2018-11-11
  • Java Calendar类使用案例详解

    Java Calendar类使用案例详解

    这篇文章主要介绍了Java Calendar类使用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • SpringBoot集成Nacos实现注册中心与配置中心流程详解

    SpringBoot集成Nacos实现注册中心与配置中心流程详解

    这篇文章主要介绍了SpringBoot集成Nacos实现注册中心与配置中心流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • Spring框架事务属性中事务隔离级别与传播行为全面讲解

    Spring框架事务属性中事务隔离级别与传播行为全面讲解

    这篇文章主要介绍了Spring框架声明式事务的事务隔离级别和事务传播行为,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • Java开发日记之你会不会5种牛的yml文件读取方式

    Java开发日记之你会不会5种牛的yml文件读取方式

    YAML是一种类似XML和JSON的用于格式化数据的标记语言,它的可读性比起XML和JSON更高一些,这篇文章主要给大家介绍了关于Java开发日记之yml文件读取方式的相关资料,需要的朋友可以参考下
    2025-05-05

最新评论