Java工具类--OkHttp工具类

以springboot项目举例

1.pom添加maven依赖

<dependency>  <groupId>com.squareup.okhttp3</groupId>  <artifactId>okhttp</artifactId>  <version>你的OkHttp版本</version>  
</dependency>

2.创建OkHttp工具类:
接下来,创建一个Java类来封装OkHttp的使用。这个类可以是一个Spring组件(例如,使用@Component注解),但通常它只是一个普通的Java类就足够了,因为它不依赖于Spring容器中的其他bean。

import okhttp3.OkHttpClient;  
import okhttp3.Request;  
import okhttp3.Response;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  import java.io.IOException;  
import java.util.concurrent.TimeUnit;  public class OkHttpUtil {  private static final Logger logger = LoggerFactory.getLogger(OkHttpUtil.class);  private static final OkHttpClient client = new OkHttpClient.Builder()  .connectTimeout(30, TimeUnit.SECONDS)  .readTimeout(30, TimeUnit.SECONDS)  .writeTimeout(30, TimeUnit.SECONDS)  .build();  private OkHttpUtil() {  // 私有构造函数,防止实例化  }  //有些小伙伴奇怪为什么没有带参的get请求,因为基础get都不支持//正常都会拼进url里,可以看最下方service调用类的例子,就拼了参数public static String get(String url) throws IOException {  Request request = new Request.Builder()  .url(url)  .build();  try (Response response = client.newCall(request).execute()) {  if (!response.isSuccessful()) {  throw new IOException("Unexpected code " + response);  }  return response.body().string();  }  }  // 可选的:添加带有请求头的get方法  public static String getWithHeaders(String url, Headers headers) throws IOException {  Request request = new Request.Builder()  .url(url)  .headers(headers)  .build();  try (Response response = client.newCall(request).execute()) {  if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);  return response.body().string();  }  } // POST方法:  public static String post(String url, String json) throws IOException {  RequestBody body = RequestBody.create(json, MediaType.parse("application/json; charset=utf-8"));  Request request = new Request.Builder()  .url(url)  .post(body)  .build();  try (Response response = client.newCall(request).execute()) {  if (!response.isSuccessful()) {  throw new IOException("Unexpected code " + response);  }  return response.body().string();  }  }  // PUT 方法  public static String put(String url, String json) throws IOException {  RequestBody body = RequestBody.create(json, MediaType.parse("application/json; charset=utf-8"));  Request request = new Request.Builder()  .url(url)  .put(body)  .build();  try (Response response = client.newCall(request).execute()) {  if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);  return response.body().string();  }  }  // DELETE 方法  public static String delete(String url) throws IOException {  Request request = new Request.Builder()  .url(url)  .delete()  .build();  try (Response response = client.newCall(request).execute()) {  if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);  return response.body().string();  }  }  }

3.使用OkHttp工具类
现在,你可以在你的Spring Boot应用中的任何地方使用这个工具类来发送HTTP请求。例如,在一个服务类中:

import org.springframework.stereotype.Service;  import java.io.IOException;  @Service  
public class MyService {  public void someMethod() {  //不带参数直接请求(一般用不到)//String url = "https://api.example.com/data";  //下方为带参数的情况String baseUrl = "https://api.example.com/data";  String param1 = "value1";  String param2 = "value2";  // 使用HttpUrl.Builder构建带有查询参数的URL  HttpUrl.Builder urlBuilder = HttpUrl.parse(baseUrl).newBuilder();  urlBuilder.addQueryParameter("param1", param1);  urlBuilder.addQueryParameter("param2", param2);  String url = urlBuilder.build().toString();//也可以不用HttpUrl类,直接自己用stringbuiler拼接带参数的String字符串,效率差不多try {  String response = OkHttpUtil.get(url);  // 处理响应  System.out.println(response);  } catch (IOException e) {  // 处理异常  e.printStackTrace();  }  }  
}

以上为最基本的请求工具类与示例,可自行增加注释、返回值处理等内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/455268.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点餐系统需求分析说明书(软件工程分析报告JAVA)

目录 1 引言 4 1.1 编写目的 4 1.2 项目背景 4 1.3 定义 4 1.4 预期的读者 5 1.5 参考资料 5 2 任务概述 5 2.1 目标 5 2.2 运行环境 5 2.3 条件与限制 6 3 数据描述 6 3.1 静态数据 6 3.2 动态数据 6 3.3 数据库介绍 6 3.4 对象模型 6 3.5 数据采集 7 4 动态模型 7 4.1 脚本 …

《深度学习》 了解YOLO基本知识

目录 一、关于YOLO 1、什么是YOLO 2、经典的检测方法 1&#xff09;one-stage单阶段检测 模型指标介绍&#xff1a; 2&#xff09;two-stage多阶段检测 二、关于mAP指标 1、概念 2、IOU 3、关于召回率和准确率 4、示例 5、计算mAP 一、关于YOLO 1、什么是YOLO YOL…

基于泊松洞过程建模的异构蜂窝网络信干比增益与近似覆盖率分析

大家好&#xff0c;我是带我去滑雪&#xff01; 移动通信业务的高速增长使得传统同构蜂窝网络结构不能满足用户对通信质量的要求&#xff0c;而异 构网络架构可以有效解决这种问题。文中对泊松洞过程下异构蜂窝网络的覆盖率进行研究。首 先&#xff0c;利用泊松洞过程( Poisson…

求助帖:ubuntu22.10 auto install user-data配置了为何还需要选择语言键盘(如何全自动)

0-现象&#xff1a;配置好autoinstll的PXE与user-data文件安装过程仍然要人工选语言、键盘等&#xff0c;非全自动&#xff1b;—— 1.硬件环境&#xff1a;x86_64机器 U盘&#xff08;/dev/sda&#xff09;&#xff1b; 2.软件环境&#xff1a;DHCPPXE启动做好grub与pxe的aut…

【AI绘画】Midjourney进阶:留白构图详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 &#x1f4af;前言&#x1f4af;什么是构图为什么Midjourney要使用构图 &#x1f4af;留白构图特点使用场景提示词书写技巧测试 &#x1f4af;小结 &#x1f4af;前言 【AI绘画】Midjourney进阶&…

Springboot 的手动配置操作讲解

1.创建新项目: 手动创建使用maven 项目 并选择骨架: quickstart 骨架用来搭建spingboot 2.手动输入pom.xml依赖: 要想创建springboot 首先继承springboot 的父类 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo…

算法的学习笔记—两个链表的第一个公共结点(牛客JZ52)

&#x1f600;前言 在链表问题中&#xff0c;寻找两个链表的第一个公共结点是一个经典问题。这个问题的本质是在两个单链表中找到它们的相交点&#xff0c;或者说它们开始共享相同节点的地方。本文将详细讲解这个问题的解题思路&#xff0c;并提供一种高效的解决方法。 &#x…

python 爬虫抓取百度热搜

实现思路&#xff1a; 第1步、在百度热搜页获取热搜元素 元素类名为category-wrap_iQLoo 即我们只需要获取类名category-wrap_为前缀的元素 第2步、编写python脚本实现爬虫 import requests from bs4 import BeautifulSoupurl https://top.baidu.com/board?tabrealtime he…

[手机Linux PostmarketOS]七, Linux使用selenium爬虫

一&#xff0c;selenium安装 # 用pip 安装 selenium pip3 install selenium --break-system-packages 二&#xff0c;安装浏览器Chrome Alpine Linux 环境中没有google Chrome&#xff0c; 使用 Chromium 浏览器作为 Chrome 的替代品&#xff0c;Chromium 是 Chrome 的开源版本…

定时任务使用kafka

定时任务使用kafka 在上述业务场景中使用 Kafka 而不是直接定时执行任务有以下几个重要原因&#xff1a; 一、解耦 任务触发与执行分离&#xff1a; 使用 XXL-JOB 定时触发任务并将任务消息发送到 Kafka&#xff0c;实现了任务触发端&#xff08;通常是调度系统&#xff09;和…

数字后端零基础入门系列 | Innovus零基础LAB学习Day5

###Module 12 RC参数提取和时序分析 数字后端零基础入门系列 | Innovus零基础LAB学习Day4 数字后端零基础入门系列 | Innovus零基础LAB学习Day3 数字后端零基础入门系列 | Innovus零基础LAB学习Day2 数字后端零基础入门系列 | Innovus零基础LAB学习Day1 ###LAB12-1 这个章节…

机器学习与神经网络:科技的星辰大海

前提 近日&#xff0c;2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者&#xff0c;这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家&#xff0c;如今却将全球范围内对机器学习和神经网络的研究和开发作为了一…

kotlin 入门总结

目录 1、构造函数 2、数据类 data class&#xff0c; 3、object 单例类&#xff0c;相当于java线程安全的懒加载 4、companion object 伴生对象&#xff0c;类似于包装静态值的一个区域块 5、解构 6、空安全 7、条件语句 8、集合 9 属性和支持属性 属性 支持属性 10 …

kali的下载与配置

kali.org官网下载 选择VMware的版本下载&#xff0c;并解压&#xff0c;复制解压后的路径 在虚拟机中&#xff0c;点击文件&#xff0c;打开 默认的账户密码均为kali 修改密码 sudo passwd root 切换root用户 su root 查看IP ip addr IP:192.168.184.131 粘贴复制shiftinsert…

从图像识别到聊天机器人:Facebook AI的多领域应用

随着人工智能技术的快速发展&#xff0c;Facebook已在多个领域内广泛应用AI技术&#xff0c;以提升用户体验、提高效率并推动创新。从图像识别到聊天机器人&#xff0c;Facebook的AI应用涵盖了社交媒体的方方面面&#xff0c;下面我们将深入探讨这些应用的具体实现及其对用户生…

ecmp观察

文章目录 简述选路策略实验说明开始验证 简述 ECMP&#xff08;Equal Cost Multi Path&#xff09;等价多路径&#xff0c;又称等价路由。指到达同一个目的IP或者目的网段存在多条COST值相等的不同路由路径。在具有多条到达同一目的地的网络链路的环境中&#xff0c;传统路由技…

2.1 > Shell 是什么、如何更熟练的使用 Bash Shell

Shell 基础知识 Shell是计算机操作系统中的一个命令行解释器&#xff0c;由C语言编写&#xff0c;用于用户与操作系统之间进行交互。用户可以通过Shell输入命令&#xff0c;操作系统接收到这些命令后执行相应的操作。Shell一般还提供了编程语言的基本功能&#xff0c;允许用户…

在 VS Code 中轻松绘图:Draw.io Integration 插件详解

文章目录 在 VS Code 中轻松绘图&#xff1a;Draw.io Integration 插件详解一、什么是 Draw.io Integration 插件&#xff1f;二、插件安装指南1. 安装步骤2. 配置插件 三、如何使用 Draw.io Integration 插件&#xff1f;1. 创建新绘图文件2. 编辑现有图表3. 常用功能与技巧 四…

网安加·百家讲坛 | 徐一丁:金融机构网络安全合规浅析

作者简介&#xff1a;徐一丁&#xff0c;北京小西牛等保软件有限公司解决方案部总监&#xff0c;网络安全高级顾问。2000年开始从事网络安全工作&#xff0c;主要领域为网络安全法规标准研究、金融行业安全咨询与解决方案设计、信息科技风险管理评估等。对国家网络安全法规标准…

【数据结构与算法】《布隆过滤器:高效数据筛选的魔法工具》

标题&#xff1a;《布隆过滤器&#xff1a;高效数据筛选的魔法工具》 摘要&#xff1a;本文将带你深入了解布隆过滤器这一神奇的数据结构。从研究推荐系统中的已读内容排除和重复内容去重问题引入&#xff0c;详细介绍布隆过滤器的产生契机、设计思想、优缺点及用途。通过阅读…