直接引用的公司的工具类

依赖

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

代码

package com.wanshun.common.utils;import cn.hutool.core.io.IoUtil;
import com.alibaba.fastjson.JSON;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;import java.io.IOException;
import java.util.Map;@Component
public class HttpComponet {private static final Logger logger = LoggerFactory.getLogger(HttpComponet.class);private static final String logTemplate = "请求方法:[{}], 业务:[{}], 事件:[{}]";private static final String UTF8 = "UTF-8";private static final int MAX_TIMEOUT = 10 * 1000;private static RequestConfig requestConfig;static {RequestConfig.Builder config = RequestConfig.custom();config.setConnectionRequestTimeout(MAX_TIMEOUT);config.setConnectTimeout(MAX_TIMEOUT);config.setSocketTimeout(MAX_TIMEOUT);requestConfig = config.build();}/**httpClient的get请求方式2* @return* @throws Exception*/public static String doGet(String url, String charset)throws Exception {/** 使用 GetMethod 来访问一个 URL 对应的网页,实现步骤: 1:生成一个 HttpClinet 对象并设置相应的参数。* 2:生成一个 GetMethod 对象并设置响应的参数。 3:用 HttpClinet 生成的对象来执行 GetMethod 生成的Get* 方法。 4:处理响应状态码。 5:若响应正常,处理 HTTP 响应内容。 6:释放连接。*//* 1 生成 HttpClinet 对象并设置参数 */HttpClient httpClient = new HttpClient();// 设置 Http 连接超时为5秒httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);/* 2 生成 GetMethod 对象并设置参数 */GetMethod getMethod = new GetMethod(url);// 设置 get 请求超时为 5 秒getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);// 设置请求重试处理,用的是默认的重试处理:请求三次getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,  new DefaultHttpMethodRetryHandler());String response = "";/* 3 执行 HTTP GET 请求 */try {int statusCode = httpClient.executeMethod(getMethod);/* 4 判断访问的状态码 */if (statusCode != HttpStatus.SC_OK) {System.err.println("请求出错: "+ getMethod.getStatusLine());}/* 5 处理 HTTP 响应内容 */// HTTP响应头部信息,这里简单打印Header[] headers = getMethod.getResponseHeaders();for (Header h : headers)System.out.println(h.getName() + "------------ " + h.getValue());// 读取 HTTP 响应内容,这里简单打印网页内容byte[] responseBody = getMethod.getResponseBody();// 读取为字节数组response = new String(responseBody, charset);// 读取为 InputStream,在网页内容数据量大时候推荐使用// InputStream response = getMethod.getResponseBodyAsStream();} catch (HttpException e) {// 发生致命的异常,可能是协议不对或者返回的内容有问题System.out.println("请检查输入的URL!");e.printStackTrace();} catch (IOException e) {// 发生网络异常System.out.println("发生网络异常!");e.printStackTrace();} finally {/* 6 .释放连接 */getMethod.releaseConnection();}return response;}/*** post请求* @param url* @return*/public static String doPost(String url, String data){DefaultHttpClient client = new DefaultHttpClient();HttpPost post = new HttpPost(url);String result = null;try {StringEntity s = new StringEntity(data);s.setContentEncoding("UTF-8");s.setContentType("application/json");//发送json数据需要设置contentTypepost.setEntity(s);HttpResponse res = client.execute(post);if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){result = EntityUtils.toString(res.getEntity());}else {logger.error("虚拟号请求失败,异常信息:" +JSON.toJSONString(res)+"--------请求参数:"+data+"----------请求地址:"+url);}} catch (Exception e) {throw new RuntimeException(e);}return result;}public static void post(String methodName, String ipcType, String url, Map<String, String> header, HttpEntity entity, String param, HttpCallback callback) {CloseableHttpClient httpClient = null;try {logger.info(logTemplate, methodName, ipcType, "请求地址: " + url);HttpPost httpPost = new HttpPost(url);if (null != header) {for (Map.Entry<String, String> entry : header.entrySet()) {httpPost.addHeader(entry.getKey(), entry.getValue());logger.info(logTemplate, methodName, ipcType, "请求头: " + entry.getKey() + "=" + entry.getValue());}}httpPost.setConfig(requestConfig);httpPost.setEntity(entity);logger.info(logTemplate, methodName, ipcType, "请求参数: " + param);httpClient = HttpClients.createDefault();httpClient.execute(httpPost, response -> {int statusCode = response.getStatusLine().getStatusCode();logger.info(logTemplate, methodName, ipcType, "响应状态: " + statusCode);String result;if (null != callback) {result = callback.handler(response);} else {result = EntityUtils.toString(response.getEntity());}if (!StringUtils.isEmpty(result)) {logger.info(logTemplate, methodName, ipcType, "响应内容: " + result);}return null;});} catch (Exception e) {logger.error(logTemplate, methodName, ipcType, "请求异常", e);} finally {IoUtil.close(httpClient);}}public interface HttpCallback {String handler(HttpResponse resp);}public static void main(String[] args) throws Exception {System.out.println( doGet("https://wsjc.oss-cn-shenzhen.aliyuncs.com/%E9%82%AE%E4%BB%B6%E6%A8%A1%E6%9D%BF/%E4%B8%87%E9%A1%BA%E5%8F%AB%E8%BD%A6-%E7%94%B5%E5%AD%90%E5%8F%91%E7%A5%A8.pdf","UTF-8"));}}

http请求发送工具类相关推荐

  1. 超好用的后端发送http请求HttpUtils工具类(基于原生http连接,不需要另外导包)

    在项目中,为了实现一些特定的功能,我们常常需要发送http异步请求 ,为此需要特意封装一个实用的HttpUtils工具类 HttpUtils工具类内容如下: package com.zyw.secki ...

  2. ali短信发送工具类

    阿里接口请求发送工具类 使用hutools工具 String host = "https://gyytz.market.alicloudapi.com";String path = ...

  3. JavaSocket编写发送TCP请求的工具类

    转自:https://blog.csdn.net/jadyer/article/details/8788303 package com.jadyer.util;import java.io.ByteA ...

  4. 分享一个发送http请求的工具类

    分享一个发送http请求的工具类 maven依赖只需要导入一个 <dependencies><dependency><groupId>commons-httpcli ...

  5. 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...

    HTTPS (英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure) 是一 ...

  6. java企业微信消息发送工具类

    java企业微信消息发送工具类 用途 基于java实现调用企业微信发送消息,文件,图片. 实现效果 文件列表 文件名 用途 WechatUtil.java 企业微信工具类 WechatTest.jav ...

  7. 邮箱验证码发送工具类(秒发)

    如题,不做过多介绍,直接上代码 package util;import javax.mail.Session; import javax.mail.Transport; import javax.ma ...

  8. 封装一个邮件发送工具类,一个字,巴适

    系列文章目录 文章目录 系列文章目录 前言 一. 介绍 二.二话不说开始干 1.引入库 2. 邮件发送实体(Mail) 3. 邮件发送类型枚举(MailType ) 4.邮件发送抽象类(Abstrac ...

  9. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://blog.csdn.net/weixin_44953227/articl ...

最新文章

  1. 解决Eclipse debug卡慢问题!!!
  2. 干货 | 神经网络与深度学习精选文章汇总
  3. 怎么看事务有没有开启成功_雅思复议又贵又难?看这位复议口语与写作都成功的学生怎么说...
  4. 如何理解操作系统的不确定性_温度最低-273度,最高却能有1.4亿亿亿亿度,如何定义的?...
  5. jQuery自动加载更多程序
  6. Oracle收集用户的权限
  7. L1-011. A-B-PAT团体程序设计天梯赛(GPLT)
  8. Ubuntu下安装Oracle Instant Client
  9. 让你的U盘变光驱,制作USB-CDROM,用U盘安装系统
  10. 浅谈公路工程项目管理的发展趋势
  11. 按word内容关键字搜索
  12. ~《概率论》~联合分布与边际分布
  13. 同义词词林或哈工大词林扩展的词类.
  14. UVA11584PartitioningByPalindromes
  15. Hive SQL 使用不了union all : SemanticException Cartesian products are disabled for safety reasons
  16. 数据结构(python语言描述)课后题答案_数据结构课后习题及答案
  17. 计算机领域 世界级难题,“电脑垃圾”——一个世界性新难题阅读答案
  18. Java ByteBuffer用法
  19. uniapp 录音_H5原生使用录音功能
  20. 大数据安全分析平台评估五要素

热门文章

  1. 2019世界乒乓球锦标赛女单刘诗雯夺冠
  2. 计算机 优质课教案,5.3正弦函数的性质优质课一等奖教案
  3. 图像特征提取之LoG特征
  4. kdevelop 安装
  5. java程序员自我简介及简历
  6. 使用向量的方法来计算点到直线的距离
  7. GRUB2命令和环境变量列表
  8. 2020年设计大事件盘点
  9. 人工智能期末复习——速通知识点
  10. python中列表(list)的基本定义和用法