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的请求实例”的完整攻略,希望能对您有所帮助。

阅读剩余 61%

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

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

相关文章

  • windows系统下文件名太长无法删除该怎么办?

    Windows系统下文件名太长无法删除的问题通常是由于文件名过长或文件路径过长引起的,这时可以采用以下几种方法解决: 方法一:使用“长路径删除工具” “长路径删除工具”是一款免费的软件,其可以帮助用户快速删除长文件名或长路径文件。步骤: 打开“长路径删除工具”软件。 拖拽或输入要删除的文件路径或文件夹路径。 点击“删除文件”按钮。 等待删除完成。 示例: 首…

    other 2023年6月26日
    00
  • Java基本数据类型与封装类型详解(int和Integer区别)

    Java基本数据类型与封装类型详解(int和Integer区别) 在Java中,数据类型可以分为两类:基本数据类型和引用数据类型。其中,基本数据类型包括整型、浮点型、字符型、布尔型等。而引用数据类型则包括除了基本数据类型以外的类型,如字符串、数组、自定义类型等。 基本数据类型与封装类型 Java中的基本数据类型有8种,分别为:byte、short、int、l…

    other 2023年6月25日
    00
  • 杀毒后系统无法运行EXE的任何应用程序的解决方法

    针对“杀毒后系统无法运行EXE的任何应用程序”的问题,一般是由于杀毒软件误报造成的,在此我将提供下面的完整攻略来解决该问题: 步骤一:关闭杀毒软件 首先在任务栏右下角找到杀毒软件的图标,并右键单击它。 在弹出的菜单中选择“退出”或“关闭”等选项来关闭杀毒软件。 步骤二:恢复被误删除的系统文件 在过度的杀毒过程中,可能会将某些系统文件误删或误加入病毒库中,导致…

    other 2023年6月25日
    00
  • 微信小程序如何像vue一样在动态绑定类名

    在微信小程序中,可以使用类似于Vue.js的动态绑定类名的方式来渲染样式。下面,我将详细讲解如何在微信小程序中实现这个功能,并提供两个示例说明。 步骤一:在标签中使用动态类名 首先,在小程序的 wxml 中,在需要绑定类名的标签内部使用 class 属性。然后,使用{}包裹一个JavaScript 表达式来动态渲染类名。 例如,在下面的 wxml 中,我们动…

    other 2023年6月27日
    00
  • htmlmailto标签详细使用方法

    HTML mailto标签详细使用方法 HTML中的mailto标签是一种用于创建电子邮件链接的标签。本文将介绍如何使用mailto标签,并提供两个示例说明。 步骤1:使用mailto标签 使用mailto标签,可以按照以下步操作: 在HTML文档中,使用<a>标签创建一个链接。 在<a>标中,使用href属性,并将其设置为mailt…

    other 2023年5月6日
    00
  • 魔兽世界8.0邪DK怎么输出 8.0邪DK天赋加点特质选择及输出手法

    魔兽世界8.0邪DK输出攻略 1. 邪DK天赋加点特质选择 1.1 天赋选择 邪DK目前的天赋可以根据实际情况进行选择。在单切场合,推荐选择以下三个天赋: 副手要塞军团士兵:能够增加副手武器的伤害输出。 鲜血盛宴:在战斗中可以回复生命值。 黑暗突变:能够增加鲜血打击和灵界打击的伤害。 在多切场合,可以选择以下几个天赋: 符文打击:可以增加主手武器的伤害输出,…

    other 2023年6月27日
    00
  • 如何用eclipse运行导入的maven项目

    以下是详细讲解“如何用Eclipse运行导入的Maven项目”的完整攻略,过程中至少包含两条示例说明的标准Markdown格式文本: 如何用Eclipse运行导入的Maven项目 Maven是一款常用的Java项目管理工具,而Eclipse是一款常用的Java集成开发环境。本文将介绍如何在Eclipse中运行导入的Maven项目。 步骤一:导入Maven项目…

    other 2023年5月10日
    00
  • 如何分析hprof文件

    如何分析hprof文件 背景 hprof文件是Java虚拟机(JVM)生成的一种堆转储文件(heap dump),它记录了 JVM 中各个对象在堆中的分布情况以及各个对象的属性情况。在排除Java应用程序内存问题时,hprof文件是一个重要的工具。本文将探讨如何分析hprof文件以解决Java应用程序的内存问题。 步骤 1. 生成hprof文件 在Java应…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部