当前位置: 首页 > news >正文

HTTP请求工具类

HTTP请求工具类

  • import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;public class HttpUtils {/*** 发送GET请求并获取响应结果* * @param url 请求的URL* @return 响应结果,如果请求失败则返回null*/public static String sendGetRequest(String url) {HttpURLConnection connection = null;BufferedReader reader = null;StringBuilder result = new StringBuilder();try {URL requestUrl = new URL(url);connection = (HttpURLConnection) requestUrl.openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(5000);connection.setReadTimeout(5000);int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = reader.readLine()) != null) {result.append(line);}}} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e) {e.printStackTrace();}}if (connection != null) {connection.disconnect();}}return result.toString();}/*** 发送POST请求并获取响应结果* * @param url    请求的URL* @param params 请求参数,格式为key=value,多个参数之间用&连接* @return 响应结果,如果请求失败则返回null*/public static String sendPostRequest(String url, String params) {HttpURLConnection connection = null;BufferedReader reader = null;StringBuilder result = new StringBuilder();try {URL requestUrl = new URL(url);connection = (HttpURLConnection) requestUrl.openConnection();connection.setRequestMethod("POST");connection.setConnectTimeout(5000);connection.setReadTimeout(5000);connection.setDoOutput(true);connection.getOutputStream().write(params.getBytes("UTF-8"));int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = reader.readLine()) != null) {result.append(line);}}} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e) {e.printStackTrace();}}if (connection != null) {connection.disconnect();}}return result.toString();}/*** 发送HTTP请求* * @param method 请求方法,如GET、POST等* @param url    请求的URL* @param params 请求参数,格式为key=value,多个参数之间用&连接* @return 响应结果,如果请求失败则返回null*/public static String sendHttpRequest(String method, String url, String params) {if ("GET".equalsIgnoreCase(method)) {return sendGetRequest(url);} else if ("POST".equalsIgnoreCase(method)) {return sendPostRequest(url, params);}return null;}/*** *调用接口* @param url,method,json字符串参数* @return com.daasan.common.core.api.R<?>**/@Overridepublic R<?> callApi(String url, String method, String paramsStr) {//校验必填参数if (StringUtils.isBlank(url)){throw new BsException("请求路径不能为空!");}if (StringUtils.isBlank(method)){throw new BsException("请求方式不能为空!");}// 根据请求方法构建不同的请求对象HttpMethod httpMethod = HttpMethod.resolve(method.toUpperCase());ResponseEntity<String> response;//将json字符串参数转为map类型的参数Map<String, Object> params = ScreenConfigUtil.jsonToMap(paramsStr);//调用接口if (httpMethod == HttpMethod.GET) {// GET请求String queryString = ScreenConfigUtil.buildQueryString(params);if (StringUtils.isNotBlank(queryString)) {url = url + "?" + queryString;}response = restTemplate.getForEntity(url, String.class);} else {// POST、PUT等请求HttpHeaders headers = new HttpHeaders();headers.set("Content-Type", "application/json");HttpEntity<Object> requestEntity = new HttpEntity<>(params, headers);response = restTemplate.exchange(url, httpMethod, requestEntity, String.class);}// 获取接口调用结果(json格式字符串)String body = response.getBody();//如果接口没有返回值,则返回调用成功的消息提示if (StringUtils.isBlank(body)){return R.success("接口调用成功!");}//如果接口返回结果以“[”开头,则转换为List<Map<String, Object>>if (body.startsWith("[")){//将结果由json格式字符串转换为List<Map<String, Object>>List<Map<String, Object>> result = ScreenConfigUtil.jsonToList(body);if (CollectionUtil.isNotEmpty(result)){return R.data(result);}}//如果接口返回结果以“{”开头,则转化为Map<String, Object>if (body.startsWith("{")){Map<String, Object> result = ScreenConfigUtil.jsonToMap(body);if (result != null && !result.isEmpty()){return R.data(result);}}return R.data(body);}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在 Java 中使用 bean 有什么好处
  • 【人工智能】OpenAI发布GPT-o1模型:推理能力的革命性突破,这将再次刷新编程领域的格局!
  • 使用 Docker 进入容器并运行命令的详细指南
  • c++ 编辑器 和 编译器 的详细解释
  • centos 7 升级Docker 与Docker-Compose 到最新版本
  • Android以及IoT设备传感器软件开发总结
  • Docker 安装配置和基本命令详解以及案例示范
  • Vue安装及环境配置【图解版】
  • Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)
  • SAP自动化-ME12批量更新某行价格
  • 京东广告投放平台整洁架构演进之路
  • CMake构建学习笔记15-组建第一个程序项目
  • fly专享
  • AtCoder ABC367 A-D题解
  • 设计师私藏的 PDF 转 JPG 利器
  • 时间复杂度分析经典问题——最大子序列和
  • ES学习笔记(12)--Symbol
  • extract-text-webpack-plugin用法
  • k个最大的数及变种小结
  • Python学习之路13-记分
  • SpringCloud集成分布式事务LCN (一)
  • v-if和v-for连用出现的问题
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 大主子表关联的性能优化方法
  • 反思总结然后整装待发
  • 设计模式 开闭原则
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 再次简单明了总结flex布局,一看就懂...
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​​​【收录 Hello 算法】9.4 小结
  • ​字​节​一​面​
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (力扣)循环队列的实现与详解(C语言)
  • (六)Hibernate的二级缓存
  • (十一)手动添加用户和文件的特殊权限
  • (一)Dubbo快速入门、介绍、使用
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Core 中的路径问题
  • .ui文件相关
  • ::前边啥也没有
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @ModelAttribute注解使用
  • @Repository 注解
  • @RequestMapping用法详解
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [C#]winform部署官方yolov10目标检测的onnx模型
  • [C#]使用C#部署yolov8-seg的实例分割的tensorrt模型