0


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

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

HttpURLConnection

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

publicclassHttpURLConnectionUtil{/**
     *
     * @param url 请求url
     * @param params 请求参数
     * @return
     * @throws IOException
     */publicstaticStringpost(String url,String params)throwsIOException{// 打开连接HttpURLConnection conn =(HttpURLConnection)newURL(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 =newStringBuilder();String line;BufferedReader br =newBufferedReader(newInputStreamReader(is));while((line = br.readLine())!=null){
                sb.append(line);}// 关闭连接
            br.close();
            is.close();return sb.toString();}returnnull;}}

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>

代码

publicclassOkHttpUtil{// get请求publicstaticStringget(String url)throwsIOException{OkHttpClient client =newOkHttpClient();Request request =newRequest.Builder().url(url).build();Response response = client.newCall(request).execute();return response.body().string();}// post请求publicstaticStringpost(String url,String params)throwsIOException{OkHttpClient client =newOkHttpClient();RequestBody body =RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), params);Request request =newRequest.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@EnableFeignClientspublicclassApplicationStarter{publicstaticvoidmain(String[] args){SpringApplication.run(ApplicationStarter.class, args);}}

定义FeignClient

@FeignClient(value ="user",  url ="http://localhost:8080/")publicinterfaceUserFeign{@PostMapping("/user/queryList")Stringquery(@RequestBodyUser param);}

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

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

开启

feign:
  okhttp:
    enabled:false
标签: http spring boot okhttp

本文转载自: https://blog.csdn.net/YUHUIXIAOFEI/article/details/130251028
版权归原作者 YUHUIXIAOFEI 所有, 如有侵权,请联系我们删除。

“spring boot请求http接口的三种方式”的评论:

还没有评论