java中httpclient封装post请求和get的请求实例

下面是“java中httpclient封装post请求和get的请求实例”的完整攻略:

一、介绍httpclient

HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议,比如1.1和RFC2616。HttpClient实现了所有HTTP方法(GET、POST、PUT、DELETE、HEAD、OPTIONS等),还支持HTTPS(基于SSL协议)。

HttpClient连接管理的机制及连接池功能都是Apache httpclient独有的功能。

二、httpclient封装get请求实例

/**
 * HttpClient 进行 GET 请求
 */
public static String doGet(String url, Map<String, String> headers) throws Exception {

    //创建httpClient实例,获取HttpClient对象
    CloseableHttpClient httpClient = HttpClientBuilder.create().build();

    try {
        //创建httpGET请求
        HttpGet httpGet = new HttpGet(url);

        //设置headers
        setHeader(headers, httpGet);

        //执行http GET请求
        CloseableHttpResponse httpResponse = httpClient.execute(httpGet);

        try {
            //获取响应内容
            HttpEntity entity = httpResponse.getEntity();

            //将响应内容转换成String类型
            String responseBody = EntityUtils.toString(entity, Charset.forName("UTF-8"));

            //打印响应内容
            System.out.println("responseBody: " + responseBody);

            return responseBody;
        } finally {
            //释放连接
            httpResponse.close();
        }
    } finally {
        //关闭httpClient
        httpClient.close();
    }
}

private static void setHeader(Map<String, String> headers, HttpRequestBase httpRequestBase) {
    if (headers == null || headers.isEmpty()) {
        return;
    }

    for (Map.Entry<String, String> entry : headers.entrySet()) {
        httpRequestBase.setHeader(entry.getKey(), entry.getValue());
    }
}

三、httpclient封装post请求实例

/**
 * httpClient 进行 POST 请求
 */
public static String doPost(String url, Map<String, String> headers, Map<String, String> params) throws Exception {

    //创建httpClient实例,获取HttpClient对象
    CloseableHttpClient httpClient = HttpClientBuilder.create().build();

    try {
        //创建httpPost请求
        HttpPost httpPost = new HttpPost(url);

        //设置headers
        setHeader(headers, httpPost);

        //设置参数
        setParams(params, httpPost);

        //执行http Post请求
        CloseableHttpResponse httpResponse = httpClient.execute(httpPost);

        try {
            //获取响应内容
            HttpEntity entity = httpResponse.getEntity();

            //将响应内容转换成String类型
            String responseBody = EntityUtils.toString(entity, Charset.forName("UTF-8"));

            //打印响应内容
            System.out.println("responseBody: " + responseBody);

            return responseBody;
        } finally {
            //释放连接
            httpResponse.close();
        }
    } finally {
        //关闭httpClient
        httpClient.close();
    }
}

private static void setParams(Map<String, String> params, HttpPost httpPost) throws UnsupportedEncodingException {
    if (params == null || params.isEmpty()) {
        return;
    }

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    for (Map.Entry<String, String> entry : params.entrySet()) {
        nameValuePairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
    }

    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
}

以上就是我对“java中httpclient封装post请求和get的请求实例”的完整攻略,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中httpclient封装post请求和get的请求实例 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Javascript递归打印Document层次关系实例分析

    下面是Javascript递归打印Document层次关系实例分析的完整攻略: 标题 Javascript递归打印Document层次关系实例分析 介绍 在开发网站时,我们经常需要查看页面的DOM结构,以便更好地理解网站的结构和样式,并进行优化。本文将介绍如何使用Javascript递归打印Document层次关系,以帮助开发者更好地理解DOM结构。 实现 …

    other 2023年6月27日
    00
  • 解决VisualStudio提示内存不足、虚拟内存而关闭

    解决Visual Studio提示内存不足、虚拟内存而关闭的攻略 当你在使用Visual Studio时,可能会遇到内存不足或虚拟内存不足的问题,导致程序崩溃或关闭。这种情况通常发生在你的计算机内存不足以支持Visual Studio运行时所需的工作负载时。下面是一些解决这个问题的方法: 1. 增加虚拟内存 虚拟内存是计算机硬盘上的一块空间,用作内存的扩展。…

    other 2023年8月1日
    00
  • Java实现单链表翻转实例代码

    下面是Java实现单链表翻转的完整攻略。首先,要明确单链表的结构,单链表是一种数据结构,它是由一系列节点组成的,每个节点都包含了一个数据元素和一个指向下一个节点的引用。 首先定义一个单链表的节点类,包含数据元素和指向下一节点的指针。 class ListNode { int val; ListNode next; ListNode(int x) { val …

    other 2023年6月27日
    00
  • Win11“开始”菜单中如何显示/隐藏最常用的应用程序?

    “Win11”开始菜单可以根据用户的使用习惯,自动显示/隐藏最常使用的应用程序。下面是显示/隐藏最常使用应用程序的方法: 点击“Win11”开始菜单,此时开始菜单会显示一列最常用的应用程序 如果想要将一个应用程序从最常使用的应用程序列表中隐藏,可以右键点击该应用程序,然后选择“从此列表移除” 如果想要将一个应用程序重新显示在最常使用的应用程序列表中,可以打开…

    other 2023年6月25日
    00
  • HP ILO2 使用详细教程[图文]

    HP ILO2 使用详细教程[图文] 什么是HP ILO2 HP ILO2(Integrated Lights-Out 2)是一种HP服务器的管理功能,可以远程控制服务器的硬件操作以及监控服务器状态,支持远程开机、重启、安全关机等操作,同时还能获取服务器运行状态信息,提高管理员操作服务器的效率和便捷性。 使用ILO2登录服务器 首先需确认服务器已配置ILO2…

    other 2023年6月27日
    00
  • 门户网站构建CSS框架的规则

    门户网站构建CSS框架的规则 1. 目标和原则 在构建门户网站的CSS框架之前,需要明确目标和遵循一些原则:- 可重用性:确保CSS框架的组件和样式能够被多个页面和不同的模块重用。- 可扩展性:使框架能够方便地添加新的组件和样式,以满足未来的需求。- 一致性:保持整个门户网站的外观和样式的一致性,提供统一的用户体验。 2. 架构和命名规则 为了保持CSS框架…

    other 2023年6月28日
    00
  • Python 内置方法和属性详解

    Python 内置方法和属性详解 Python 是一门广泛应用于科学计算、自然语言处理、Web 开发等领域的高级编程语言,其内置了丰富的方法和属性,对于 Python 开发者来说,掌握这些内置方法和属性对于开发高效、简洁、可读性强的 Python 代码非常重要。 本文将对 Python 的内置方法和属性进行详细讲解,帮助大家深入理解 Python 的内置功能…

    other 2023年6月27日
    00
  • MySQL 8.0新特性之隐藏字段的深入讲解

    MySQL 8.0新特性之隐藏字段的深入讲解 MySQL 8.0引入了一项新特性-隐藏字段。隐藏字段是指用户不能直接查询或操作的字段,但是它们可以被用于一些特定的操作,比如内部计算或者在读取时进行过滤。在本文中,我们将深入讲解MySQL 8.0中隐藏字段的使用。 创建隐藏字段 在MySQL 8.0中,我们可以使用以下语法创建隐藏字段: CREATE TABL…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部