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

yizhihongxing

下面是“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日

相关文章

  • 详解如何在cmd命令窗口中搭建简单的python开发环境

    以下是搭建Python开发环境的完整攻略: 确认Python安装 首先需要确认电脑是否已经安装了Python。可以在cmd命令窗口中输入以下命令来查看: python –version 如果系统已经安装Python,会显示Python的版本信息。如果没有安装,则需要先到Python官网下载并安装Python。 配置环境变量 完成Python的安装后,需要配…

    other 2023年6月26日
    00
  • gd库知识点

    GD库知识点 GD库是一个开源的图像处理库,使用广泛。它可以通过PHP扩展进行使用,常见的应用场景包括: 生成验证码 图片压缩和格式转换 操作图片并且生成缩略图等等 本文将介绍GD库的一些基础知识和操作方法。 安装与配置 GD库可以通过PHP扩展进行使用。 在Linux环境下,可以通过修改php.ini配置文件启用GD扩展,具体方式为: extension=…

    其他 2023年3月29日
    00
  • Android应用实现安装后自启动的方法

    以下是实现Android应用安装后自启动的方法的完整攻略: 方法1:使用广播接收器(Broadcast Receiver) 在AndroidManifest.xml文件中注册一个广播接收器,指定接收BOOT_COMPLETED(开机完成)和PACKAGE_REPLACED(应用安装完成)等系统广播事件。 <receiver android:name=\…

    other 2023年10月14日
    00
  • 详解android与服务端交互的两种方式

    下面我会对“详解android与服务端交互的两种方式”的攻略进行详细讲解。 一、使用HTTP请求进行交互 HTTP是一种应用层协议,是客户端与服务端进行通信的基础。因此,我们可以使用HTTP请求实现android与服务端的交互。 1.1 HttpClient HttpClient是一个Java语言编写的HTTP客户端工具,包含了HTTP协议相关的所有必要操作…

    other 2023年6月27日
    00
  • 关于linux:解释exportlang lc_ctype lc_all的效果

    关于Linux:解释export LANG、export LC_CTYPE、export LC_ALL的效果 在Linux中,export命令用于设置环境变量。其中,export LANG、export LC_CTYPE和export LC_ALL是三个常用的环境变量设置命令。下面我们将详细讲解export LANG、export LC_CTYPE和expo…

    other 2023年5月7日
    00
  • 深入解读Java代码组织中的package包结构

    深入解读Java代码组织中的package包结构攻略 在Java中,package(包)是一种用于组织和管理代码的机制。它可以帮助我们将相关的类和接口组织在一起,提供更好的代码可读性和可维护性。本攻略将详细讲解Java代码组织中的package包结构,并提供两个示例说明。 1. 包的定义和命名规范 包是一种逻辑上的组织方式,它将相关的类和接口放在一起。包的定…

    other 2023年9月7日
    00
  • C语言 字符串首字母转换成大写简单实例

    C语言 字符串首字母转换成大写简单实例攻略 在C语言中,要将字符串的首字母转换成大写,可以按照以下步骤进行: 导入必要的头文件: #include <stdio.h> #include <ctype.h> 定义一个函数来实现首字母转换: void capitalizeFirstLetter(char *str) { if (str !…

    other 2023年8月19日
    00
  • 详解使用Next.js构建服务端渲染应用

    使用Next.js可以轻松地构建出一个React应用的完整解决方案,其中包括服务端渲染(SSR)、静态文件生成、热模块替换(HMR)等功能。下面,我将为大家详细讲解如何使用Next.js构建服务端渲染应用的完整攻略。 准备工作 在开始构建之前,我们需要提前安装好Node.js和npm(或者yarn)。 创建项目 使用命令行工具创建一个空的文件夹: mkdir…

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