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

java 复制代码
//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请求:

java 复制代码
//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 配置类中进行配置。例如:

java 复制代码
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 请求
java 复制代码
@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);

    }
相关推荐
网安-轩逸3 小时前
网络安全:攻击和防御练习(全战课), DDos压力测试
web安全·okhttp·ddos
Winston Wood3 天前
一文学习开源框架OkHttp
网络·okhttp
好开心333 天前
js高级06-ajax封装和跨域
开发语言·前端·javascript·ajax·okhttp·ecmascript·交互
上官花雨3 天前
什么是axios?怎么使用axios封装Ajax?
前端·ajax·okhttp
Lucky me.5 天前
本地maven添加jar包
okhttp·maven·jar
少说多做3436 天前
Android 网络请求(二)OKHttp网络通信
android·网络·okhttp
小白学大数据8 天前
使用OkHttp进行HTTPS请求的Kotlin实现
爬虫·python·okhttp·https·kotlin
小白学大数据9 天前
虎扑APP数据采集:JavaScript与AJAX的结合使用
开发语言·javascript·爬虫·ajax·okhttp
柯南二号9 天前
Android okhttp 网络链接各阶段监控
android·网络·okhttp