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

基于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请求:

//okHttpClient
        OkHttpClient 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 {
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

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

2. 发送 GET 请求

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

示例:发送 GET 请求
@SpringBootTest
class Demo1ApplicationTests {

    @Autowired
    private RestTemplate restTemplate;
    @Test
    public 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.kler.cn/a/411158.html

相关文章:

  • C语言数据结构-链表
  • HTTP中GET和POST的区别是什么?
  • 前端---CSS(部分用法)
  • synchronized 锁的性能优化:自适应自旋、锁消除、锁粗化与偏向锁
  • vue实现列表滑动下拉加载数据
  • 前后端分离,解决vue+axios跨域和proxyTable不生效等问题
  • intellij idea控制台 visual stadio dev c++ keil pycharm python 输出乱码解决方案最终版 java
  • Springboot自带注解@Scheduled实现定时任务
  • 自动泊车“哐哐撞大墙”,小米SU7智驾功能bug缠身?
  • 组合模式详解及Java实现
  • 【环境搭建】更新Docker Compose到v2.x版本以支持--profile选项
  • HTML 常用标签属性汇总一〈body〉标签
  • Cocos编辑器
  • 【算法一周目】滑动窗口(2)
  • Linux宝塔部署wordpress网站更换服务器IP后无法访问管理后台和打开网站页面显示错乱
  • C语言函数递归经典题型——汉诺塔问题
  • 【博主推荐】C#的winfrom应用中datagridview常见问题及解决方案汇总
  • Qt SQL模块概述
  • 【数据结构实战篇】用C语言实现你的私有队列
  • SpringBoot使用MySQL数据库,配置alibaba druid数据库连接池
  • 力扣 73. 矩阵置零
  • 【vue3实现微信小程序】每日专题与分页跳转的初步实现
  • 微服务篇-深入了解使用 RestTemplate 远程调用、Nacos 注册中心基本原理与使用、OpenFeign 的基本使用
  • 【Unity3D】创建自定义字体
  • C语言实例之9斐波那契数列实现
  • 图论入门编程