基于springboot的HttpClient、OKhttp、RestTemplate对比

HttpClient详细

Httpclient基础!!!!实战训练!!!!-CSDN博客

OKhttp使用

OKhttp导包

 <!-- ok的Http连接池 --><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.3</version></dependency>

Get请求

//okHttpClient//创建一个新的 OkHttpClient 实例OkHttpClient client = new OkHttpClient();//创建一个请求对象Request request = new Request.Builder().url("http://localhost:8090/api/product/test").get().build();//发送请求并接收响应Response response = client.newCall(request).execute();System.out.println(response.body().string());response.body().close();

post请求:

//okHttpClientOkHttpClient client = new OkHttpClient();JSONObject jsonObject=new JSONObject();jsonObject.put("username","admin");jsonObject.put("password","123456");/* System.out.println("jsonObeject对象   :"+jsonObject);System.out.println("toJSONString()方法:"+jsonObject.toJSONString());System.out.println("toString()方法    :"+jsonObject.toString());System.out.println("String.valueOf方法:"+String.valueOf(jsonObject));*///转化为字符串String s1=jsonObject.toJSONString();//构建请求体(RequestBody): 你可以根据需要发送不同类型的请求体。以下示例演示如何发送 JSON 格式的请求体:RequestBody requestBody = RequestBody.create(s1, MediaType.parse("application/json; charset=utf-8"));//创建一个请求对象Request request = new Request.Builder().url("http://localhost:8080/admin/employee/login").post(requestBody)//设置请求方法为 POST 并设置请求体.addHeader("Authorization", "Bearer your_token_here")  // 添加授权请求头(可选).build();Response response = client.newCall(request).execute();System.out.println(response.body().string());response.body().close();

toString()、String.valueOf()以及toJSONString()的区别及用法-CSDN博客

扩展知识:

1. RequestBody.create()

RequestBody.create() 是 OkHttp 提供的一个静态方法,用于构造一个 RequestBody 对象。在发送 HTTP 请求时,RequestBody 通常包含了请求的内容(例如 POST 请求中的 JSON 数据、表单数据等)。

RequestBody.create() 有两个参数:

  • 第一个参数是请求体的内容,可以是一个 Stringbyte[]InputStream 等形式。
  • 第二个参数是请求体的媒体类型(MediaType),它描述了请求体的内容类型。

2、MediaType.parse("application/json; charset=utf-8")

MediaType 是 OkHttp 中用于描述内容类型的类。它包含了关于请求或响应数据格式的元数据。MediaType.parse() 方法用于解析一个字符串并返回一个 MediaType 对象。

在这里,"application/json; charset=utf-8" 表示请求体的内容类型是 JSON 格式,并且使用了 UTF-8 字符编码。

具体来说:

  • "application/json" 表示请求体的格式是 JSON。
  • charset=utf-8 指定了请求体数据采用 UTF-8 编码格式。

RestTemplate使用

1. 基本配置

在 Spring 中,RestTemplate 通常是作为一个 Bean 注册到 Spring 容器中的,可以在 Spring 配置类中进行配置。例如:

package com.example.demo1.configuration;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class TestConfig {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}}

通过这种方式,RestTemplate 可以在 Spring 容器中管理,并且可以注入到其他类中。

2. 发送 GET 请求

RestTemplate 提供了多种方法来发送 GET 请求,最常用的是 getForObject()getForEntity()

示例:发送 GET 请求
@SpringBootTest
class Demo1ApplicationTests {@Autowiredprivate RestTemplate restTemplate;@Testpublic void test() throws IOException {String url = "http://localhost:8090/api/product/test";String response = restTemplate.getForObject(url, String.class);System.out.println(response);}

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

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

相关文章

【Python】九大经典排序算法:从入门到精通的详解(冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、计数排序、基数排序、桶排序)

文章目录 1. 冒泡排序&#xff08;Bubble Sort&#xff09;2. 选择排序&#xff08;Selection Sort&#xff09;3. 插入排序&#xff08;Insertion Sort&#xff09;4. 归并排序&#xff08;Merge Sort&#xff09;5. 快速排序&#xff08;Quick Sort&#xff09;6. 堆排序&…

【PyTorch】(基础三)---- 图像读取和展示

图像读取和展示 pytorch本身并不提供图像的读取和展示功能&#xff0c;利用pytorch执行计算机视觉任务的时候&#xff0c;通常是利用opencv等工具先进行图像处理&#xff0c;然后将结果转化成tensor类型传递给pytorch&#xff0c;在pytorch执行之后&#xff0c;也可以将tensor…

Diffusion异常检测相关论文及代码整理

扩散模型&#xff08;Diffusion Models&#xff09;是一种生成模型&#xff0c;广泛用于图像生成、文本生成等领域。在异常检测任务中&#xff0c;扩散模型也可以被用来识别和检测异常数据点。该文章对近几年利用扩散模型进行异常检测的文章进行了整理&#xff1a; 2024 1. A…

蓝桥杯c++算法秒杀【6】之动态规划【下】(数字三角形、砝码称重(背包问题)、括号序列、异或三角:::非常典型的必刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01;! ! ! ! &#xff01; 关注博主&#xff0c;更多蓝桥杯nice题目静待更新:) 动态规划 三、括号序列 【问题描述】 给定一个括号序列&#xff0c;要求尽可能少地添加若干括号使得括号序列变得合…

LLM PPT Translator

LLM PPT Translator 引言Github 地址UI PreviewTranslated Result Samples 引言 周末开发了1个PowerPoint文档翻译工具&#xff0c;上传PowerPoint文档&#xff0c;指定想翻译的目标语言&#xff0c;通过LLM的能力将文档翻译成目标语言的文档。 Github 地址 https://github.…

三格电子—EtherNet IP转Modbus RTU网关

EtherNet/IP转Modbus RTU网关 SG-EIP-MOD-210 产品用途 SG-EIP-MOD-210网关可以实现将Modbus接口设备连接到 EtherNet/IP网络中。用户不需要了解具体的Modbus和 EtherNet/IP协议即可实现将Modbus设备挂载到 EtherNet/IP接口的PLC上&#xff0c;并和Modbus设备进行数据交互。拓…

【计算机网络】核心部分复习

目录 交换机 v.s. 路由器OSI七层更实用的TCP/IP四层TCPUDP 交换机 v.s. 路由器 交换机-MAC地址 链接设备和设备 路由器- IP地址 链接局域网和局域网 OSI七层 物理层&#xff1a;传输设备。原始电信号比特流。数据链路层&#xff1a;代表是交换机。物理地址寻址&#xff0c;交…

前端网络请求:从 XMLHttpRequest 到 Axios

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:前端网络请求&#xff1a;从 XMLHttpRequest 到 Axios 前言 在网络应用中&#xff0c;前后端的数据…

计算机毕业设计Python+大模型美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Element UI 打包探索【2】

目录 第三个命令 第四个命令 第五个命令 第六个命令 第七个命令 cross-env BABEL_ENV babel 第八个命令 总结 书&#x1f4da;接上文Element UI 打包探索【1】我们继续来看 第三个命令 "lint": "eslint src/**/* test/**/* packages/**/* build/**/* …

一篇保姆式centos/ubuntu安装docker

前言&#xff1a; 本章节分别演示centos虚拟机&#xff0c;ubuntu虚拟机进行安装docker。 上一篇介绍&#xff1a;docker一键部署springboot项目 一&#xff1a;centos 1.卸载旧版本 yum remove docker docker-client docker-client-latest docker-common docker-latest doc…

游戏引擎学习第23天

实时代码编辑功能的回顾 当前实现的实时代码编辑功能已经取得了显著的成功&#xff0c;表现出强大的性能和即时反馈能力。该功能允许开发者在修改代码后几乎立即看到变化在运行中的程序中体现出来&#xff0c;极大提升了开发效率。尽管目前的演示内容较为简单&#xff0c;呈现…

【代码pycharm】动手学深度学习v2-08 线性回归 + 基础优化算法

课程链接 线性回归的从零开始实现 import random import torch from d2l import torch as d2l# 人造数据集 def synthetic_data(w,b,num_examples):Xtorch.normal(0,1,(num_examples,len(w)))ytorch.matmul(X,w)bytorch.normal(0,0.01,y.shape) # 加入噪声return X,y.reshape…

基于Spring Boot+Unipp的博物馆预约小程序(协同过滤算法、二维码识别)【原创】

&#x1f388;系统亮点&#xff1a;协同过滤算法、二维码识别&#xff1b; 一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk17 前端&#xff1a; 技术&#xff1a;框…

什么是 WPF 中的依赖属性?有什么作用?

依赖属性&#xff08;Dependency Property&#xff09;是 WPF 的一个核心概念&#xff0c;它为传统的 .NET 属性提供了增强功能&#xff0c;支持绑定、样式、动画和默认值等功能。通过依赖属性&#xff0c;WPF 提供了一种灵活的数据驱动的方式来处理 UI 属性。 1. 什么是依赖属…

【TS】TypeScript基本使用

什么是TypeScript&#xff1f; 是一种编程语言&#xff0c;是JavaScript的超集&#xff0c;过添加静态类型、类、接口和模块等功能&#xff0c;使得在大型应用程序中更容易进行维护和扩展&#xff0c;可以编译成纯JavaScript 静态类型和动态类型有什么区别&#xff1f; 静态…

git 命令之只提交文件的部分更改

git 命令之只提交文件的部分更改 有时&#xff0c;我们在一个文件中进行了多个更改&#xff0c;但只想提交其中的一部分更改。这时可以使用 使用 git add -p 命令 Git add -p命令允许我们选择并添加文件中的特定更改。它将会显示一个交互式界面&#xff0c;显示出文件中的每个更…

深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现

深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现 1、DW卷积与普通卷积计算量对比DW与PW计算量普通卷积计算量计算量对比 2、MobileNet V1MobileNet V1网络结构MobileNet V1网络结构代码 3、MobileNet V2倒残差结构模块倒残…

[极客大挑战 2019]BabySQL--详细解析

信息搜集 进入界面&#xff1a; 输入用户名为admin&#xff0c;密码随便输一个&#xff1a; 发现是GET传参&#xff0c;有username和password两个传参点。 我们测试一下password点位能不能注入&#xff1a; 单引号闭合报错&#xff0c;根据报错信息&#xff0c;我们可以判断…

C 语言面向对象

面向对象的基本特性&#xff1a;封装&#xff0c;继承&#xff0c;多态 1.0 面向过程概念 当我们在编写程序时&#xff0c;通常采用以下步骤&#xff1a; 1. 将问题的解法分解成若干步骤 2. 使用函数分别实现这些步骤 3. 依次调用这些函数 这种编程风格的被称作 面向过程…