spring boot请求http接口的三种方式

这篇具有很好参考价值的文章主要介绍了spring boot请求http接口的三种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HttpURLConnection

HttpURLConnection 是 Java 中的 HTTP 客户端实现,,适用于简单的请求需要。

public class HttpURLConnectionUtil {
    /**
     *
     * @param url 请求url
     * @param params 请求参数
     * @return
     * @throws IOException
     */
    public static String post(String url, String params) throws IOException {
        // 打开连接
        HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
        // 设置请求参数
        conn.setRequestMethod("POST");
        // 设置允许添加参数
        conn.setDoOutput(true);
        // 打开输出流
        OutputStream os = conn.getOutputStream();
        os.write(params.getBytes());
        os.flush();
        os.close();
        // 判断请求结果
        if (conn.getResponseCode() == 200) {
            // 读取响应内容
            InputStream is = conn.getInputStream();
            StringBuilder sb = new StringBuilder();
            String line;
            BufferedReader br = new BufferedReader(new InputStreamReader(is));

            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            // 关闭连接
            br.close();
            is.close();
            return sb.toString();
        }

        return null;
    }
}

HttpURLConnection主要工作内容:打开socket连接,封装http请求报文,解析请求报文。

okhttp

OkHttp 是一个第三方的 HTTP 客户端库,它比 Java 标准的 HttpURLConnection 更高效、更实用。主要特点包括:

  1. 比 HttpURLConnection 快得多,HttpURLConnection 每个请求都会创建一个新的套接字,而 OkHttp 使用连接池,重用其他请求的套接字。
  2. 支持同步和异步请求。异步调用不会阻塞线程。
  3. 支持 GZIP 压缩,减少网络流量。
    引入依赖:
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.14.9</version>
</dependency>

代码

public class OkHttpUtil {
    // get请求
    public static String get(String url) throws IOException {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
            .url(url)
            .build();
        
        Response response = client.newCall(request).execute();
        return response.body().string();
    }

    // post请求
    public static String post(String url, String params) throws IOException {
        OkHttpClient client = new OkHttpClient();
        RequestBody body = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), params);
        Request request = new Request.Builder()
            .url(url) 
            .post(body)
            .build();
            
        Response response = client.newCall(request).execute();
        return response.body().string();
    }
}

OpenFeign

OpenFeign是SpringCloud自己研发的,在Feign的基础上支持了Spring MVC的注解,如@RequesMapping等等。是SpringCloud中的第二代负载均衡客户端。底层是封装HttpClient技术。
引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

spring boot开启OpenFeign,在启动类加上@EnableFeignClients注解

@SpringBootApplication
@EnableFeignClients
public class ApplicationStarter {

    public static void main(String[] args) {
        SpringApplication.run(ApplicationStarter.class, args);
    }
}

定义FeignClient

@FeignClient(value = "user",  url = "http://localhost:8080/")
public interface UserFeign {

    @PostMapping("/user/queryList")
    String query(@RequestBody User param);
}

OpenFeign默认客户端HttpURLConnection执行,使用okttp提高性能
引入依赖

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-okhttp</artifactId>
</dependency>

开启文章来源地址https://www.toymoban.com/news/detail-630825.html

feign:
  okhttp:
    enabled: false

到了这里,关于spring boot请求http接口的三种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot获取resources目录下的文件的三种方式

    在Spring Boot项目中,经常需要获取 resources 目录下的文件。这些文件可以包括配置文件、模板文件、静态资源等。本文将介绍三种常用的方法来获取 resources 目录下的文件。 ResourceLoader 接口是Spring框架提供的用于加载各种资源的接口,包括 classpath 下的资源。在Spring Boot中,可

    2024年02月16日
    浏览(60)
  • HTTP请求方法之POST请求的三种常见数据提交格式

    目录 🌐 application/x-www-form-urlencoded 🌐 multipart/form-data 🌐 application/json    本文所讲的 POST 请求是 HTTP/1.1 协议中规定的众多 HTTP 请求方法的其中最常用的一个。一般使用 POST 请求方法向服务器发送数据(主要是一些创建更新操作),本文讨论的是 POST 请求方法常用的三种数据

    2024年02月09日
    浏览(72)
  • 前端终止请求的三种方式(ajax、axios)

    一、原生ajax终止请求 1、abort() ​ XMLHttpRequest.abort() 方法用于终止 XMLHttpRequest 对象的请求,该方法没有参数,也没有返回值。当调用该方法时,如果对应 XMLHttpRequest 对象的请求已经被发送并且正在处理中,则会中止该请求;如果请求已经完成(即已经接收到完整的响应),则

    2024年02月09日
    浏览(47)
  • Spring的三种异常处理方式

            异常分为编译时异常和运行时异常,编译时异常我们 try-cache 进行捕获,捕获后自行处理,而运行时异常是不 可预期的,就需要规范编码来避免,在SpringMVC 中,不管是编译异常还是运行时异常,都可以最终由 SpringMVC提供的异常处理器进行统一处理,这样就避免了

    2024年02月12日
    浏览(41)
  • C#调用COM接口的三种方式

    使用OLEView.exe查看本机安装的COM组件CLSID和接口Guid   COM组件的提供者没有提供CLSID等信息或信息提供不全时,可以使用OleView.exe来查看其类和接口的GUID. OLEView.exe全称是OLE-COM Object Viewer,是Microsoft SDK中包含的一个工具,可以用来查看本机安装的所有COM组件的信息,包括CLSID、

    2024年02月04日
    浏览(66)
  • Spring 创建 Bean 的三种方式

    在使用 Spring 框架后,对象以 Bean 的形式统一交给 IOC 容器去创建和管理。现阶段主流的方式是基于 SpringBoot 框架,基于注解的方式实现 Bean 的创建,但在原生 Spring 框架中其实存在三种创建 Bean 的方式。 BeanProcess 实体类,虽然加了 @Component 等三个注解,但只在注解方式创建

    2024年02月14日
    浏览(53)
  • Spring常见的三种注入方式

    基于构造器的依赖注入 基于Setter的依赖注入 基于字段变量的依赖注入 (当然还有其它不常用的注入方式:静态工厂方法注入、动态工厂方法注入) 2.1 构造器注入 2.2 Setter注入 2.3 字段变量注入 字段变量注入是基于注解实现的,即@Resource或者@Autowired, @Autowired :表示自动注

    2024年02月09日
    浏览(92)
  • java对接第三方接口的三种方式

    在日常工作中,经常需要跟第三方系统对接,我们做为客户端,调用他们的接口进行业务处理,常用的几种调用方式有: 1.原生的Java.net.HttpURLConnection(jdk); 2.再次封装的HttpClient、CloseableHttpClient(Apache); 3.Spring提供的RestTemplate; 当然还有其他工具类进行封装的接口,比

    2024年04月28日
    浏览(64)
  • springboot依赖注入的三种方式

    springboot依赖注入的三种方式 在 Spring Boot 中,使用 XML 配置依赖注入(DI)时,需要使用 bean 元素来定义 bean,并使用 property 元素来为 bean 的属性注入值或依赖对象。 以下是一个简单的示例: 在 src/main/resources 目录下创建 applicationContext.xml 文件。 在该文件中定义一个 testBean

    2023年04月23日
    浏览(45)
  • 【SpringBoot】获取HttpServletRequest的三种方式

    线程安全 缺点: 每个方法都需要写一遍 线程安全 在 Spring 中, DemoRequestController 的 scope 是 singleton (单例),也就是说在整个 web 系统中,只有一个 DemoRequestController ;但是其中注入的 request 却是线程安全的,原因在于:使用这种方式,当 Bean (本例的 DemoRequestController )初始化

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包