Java工具类:HttpUtil(HttpClient实现http的请求,获取响应)

 */

public static String post(String url, Map<String, String> headers, Map<String, String> params) {

    HttpPost post = new HttpPost(url);

    post.setEntity(getHttpEntity(params));

    return getRespString(post, headers);

}



/**

 * 执行post请求获取响应(请求体为JOSN数据)

 *

 * @param url  请求地址

 * @param json 请求的JSON数据

 * @return 响应内容

 */

public static String postJson(String url, String json) {

    return postJson(url, null, json);

}



/**

 * 执行post请求获取响应(请求体为JOSN数据)

 *

 * @param url     请求地址

 * @param headers 请求头参数

 * @param json    请求的JSON数据

 * @return 响应内容

 */

public static String postJson(String url, Map<String, String> headers, String json) {

    HttpPost post = new HttpPost(url);

    post.setHeader("Content-type", "application/json");

    post.setEntity(new StringEntity(json, UTF8));

    return getRespString(post, headers);

}



/**

 * 执行post请求获取响应(请求体包含文件)

 *

 * @param url    请求地址

 * @param params 请求参数(文件对应的value传File对象)

 * @return 响应内容

 */

public static String postFile(String url, Map<String, Object> params) {

    return postFile(url, null, params);

}



/**

 * 执行post请求获取响应(请求体包含文件)

 *

 * @param url     请求地址

 * @param headers 请求头参数

 * @param params  请求参数(文件对应的value传File对象)

 * @return 响应内容

 */

public static String postFile(String url, Map<String, String> headers, Map<String, Object> params) {

    HttpPost post = new HttpPost(url);

    MultipartEntityBuilder builder = MultipartEntityBuilder.create();

    if (Objects.nonNull(params) && !params.isEmpty()) {

        for (Entry<String, Object> entry : params.entrySet()) {

            String key = entry.getKey();

            Object value = entry.getValue();

            if (Objects.isNull(value)) {

                builder.addPart(key, new StringBody("", ContentType.TEXT_PLAIN));

            } else {

                if (value instanceof File) {

                    builder.addPart(key, new FileBody((File) value));

                } else {

                    builder.addPart(key, new StringBody(value.toString(), ContentType.TEXT_PLAIN));

                }

            }

        }

    }

    HttpEntity entity = builder.build();

    post.setEntity(entity);

    return getRespString(post, headers);

}



/**

 * 下载文件

 *

 * @param url      下载地址

 * @param path     保存路径(如:D:/images,不传默认当前工程根目录)

 * @param fileName 文件名称(如:hello.jpg)

 */

public static void download(String url, String path, String fileName) {

    HttpGet get = new HttpGet(url);

    File dir = new File(path);

    if (!dir.exists()) {

        dir.mkdirs();

    }

    String filePath = null;

    if (Objects.isNull(path) || path.isEmpty()) {

        filePath = fileName;

    } else {

        if (path.endsWith("/")) {

            filePath = path + fileName;

        } else {

            filePath += path + "/" + fileName;

        }

    }

    File file = new File(filePath);

    if (!file.exists()) {

        try {

            file.createNewFile();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    try (FileOutputStream fos = new FileOutputStream(file); InputStream in = getRespInputStream(get, null)) {

        if (Objects.isNull(in)) {

            return;

        }

        byte[] bytes = new byte[BYTE_ARRAY_LENGTH];

        int len = 0;

        while ((len = in.read(bytes)) != -1) {

            fos.write(bytes, 0, len);

        }

    } catch (Exception e) {

        e.printStackTrace();

    }

}



/**

 * 获取请求体HttpEntity

 *

 * @param params 请求参数

 * @return HttpEntity

 */

private static HttpEntity getHttpEntity(Map<String, String> params) {

    List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();

    for (Entry<String, String> entry : params.entrySet()) {

        pairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));

    }

    HttpEntity entity = null;

    try {

        entity = new UrlEncodedFormEntity(pairs, UTF8);

    } catch (UnsupportedEncodingException e) {

        e.printStackTrace();

    }

    return entity;

}



/**

 * 设置请求头

 *

 * @param request 请求对象

 * @param headers 请求头参数

 */

private static void setHeaders(HttpUriRequest request, Map<String, String> headers) {

    if (Objects.nonNull(headers) && !headers.isEmpty()) {

        // 请求头不为空,则设置对应请求头

        for (Entry<String, String> entry : headers.entrySet()) {

            request.setHeader(entry.getKey(), entry.getValue());

        }

    } else {

        // 请求为空时,设置默认请求头

        request.setHeader("Connection", "keep-alive");

        request.setHeader("Accept-Encoding", "gzip, deflate, br");

        request.setHeader("Accept", "*/*");

        request.setHeader("User-Agent",

                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36");

    }

}



/**

 * 执行请求,获取响应流

 *

 * @param request 请求对象

 * @return 响应内容

 */

private static InputStream getRespInputStream(HttpUriRequest request, Map<String, String> headers) {

    // 设置请求头

    setHeaders(request, headers);

    // 获取响应对象

    HttpResponse response = null;

    try {

        response = HttpClients.createDefault().execute(request);

    } catch (Exception e) {

        e.printStackTrace();

        return null;

    }

    // 获取Entity对象

    HttpEntity entity = response.getEntity();

    // 获取响应信息流

    InputStream in = null;

    if (Objects.nonNull(entity)) {

        try {

            in = entity.getContent();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    return in;

}



/**

 * 执行请求,获取响应内容

 *

 * @param request 请求对象

 * @return 响应内容

 */

private static String getRespString(HttpUriRequest request, Map<String, String> headers) {

    byte[] bytes = new byte[BYTE_ARRAY_LENGTH];

    int len = 0;

    try (InputStream in = getRespInputStream(request, headers);

最后

Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
在这里插入图片描述

String> headers) {

    byte[] bytes = new byte[BYTE_ARRAY_LENGTH];

    int len = 0;

    try (InputStream in = getRespInputStream(request, headers);

最后

Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
[外链图片转存中…(img-cFizpdV6-1714363651679)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
httputil是一个常用的网络请求工具类,用于发送HTTP请求获取响应。在使用httputil工具类发送请求时,可以通过设置请求的cookie来实现身份验证、会话管理等功能。 要设置cookie,首先需要创建一个HttpClient对象。HttpClient用于发送请求获取响应。在创建HttpClient对象时,可以通过HttpClientBuilder类来设置一些自定义的配置,包括cookie的相关设置。 1. 创建HttpClient对象: ```java HttpClient httpClient = HttpClientBuilder.create().build(); ``` 2. 创建HttpPost或HttpGet对象,设置请求URL和其他相关参数。 3. 设置cookie: ```java CookieStore cookieStore = new BasicCookieStore(); BasicClientCookie cookie = new BasicClientCookie("cookie_name", "cookie_value"); cookie.setDomain("example.com"); cookie.setPath("/"); cookieStore.addCookie(cookie); HttpContext httpContext = new BasicHttpContext(); httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore); ``` 这里创建了一个CookieStore对象,用于存储cookie。然后创建一个BasicClientCookie对象,设置cookie的名称和值。可以通过setDomain()和setPath()方法设置cookie的域和路径。将cookie添加到cookieStore中。 然后创建一个HttpContext对象,并将cookieStore设置为其属性。将HttpContext对象传递给HttpClient对象的execute()方法,执行请求。 4. 发送请求: ```java HttpResponse response = httpClient.execute(httpPost, httpContext); ``` 通过以上步骤,就可以使用httputil工具类发送带有cookie的HTTP请求了。在发送请求时,服务器将根据提供的cookie进行身份验证或会话管理。 需要注意的是,htttputil工具类的具体使用方式可能会因具体的框架和版本而有所不同,可以根据实际情况进行相应的调整。以上是一个基本的示例,供参考使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值