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 更高效、更实用。主要特点包括:
- 比 HttpURLConnection 快得多,HttpURLConnection 每个请求都会创建一个新的套接字,而 OkHttp 使用连接池,重用其他请求的套接字。
- 支持同步和异步请求。异步调用不会阻塞线程。
- 支持 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
版权归原作者 YUHUIXIAOFEI 所有, 如有侵权,请联系我们删除。