网络请求
更新: 8/7/2025 字数: 0 字 时长: 0 分钟
后端转发请求也是一个十分常见的需求,我们需要Java服务作为客户端调用远程的http/ws接口,然后再在内部进行处理,最后转发给前端,这里主要来讲一下进行网络请求常用的技术栈
OkHttp
OkHttp算是一个相当常见的客户端请求工具了,时至今日仍然是最受欢迎的客户端请求工具之一,其本身支持多种丰富的网络请求模式,其中就包含了我们常见的Http,WebSocket,SSE请求。
引入到项目中
xml
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp-jvm</artifactId>
<version>5.1.0</version>
</dependency>
由于新版本的OkHttp对KMP做了适配,因此在Maven项目中要针对不同的情况引入不同的包,针对我们目前的Java项目(后端jvm环境),这里引入okhttp-jvm
即可
ps:由于OkHttp最早是为Android做的请求包,而Google已经将Android的官方语言替换为了Kotlin,因此在我们的Java项目中引入OHttp会引入一些Kotlin标准库,这会对程序的内存占用造成一定的影响
建立连接
首先我们要先创建一个OkHttp客户端,后续我们的各种请求都是基于这个客户端。
java
OkHttpClient httpClient = new OkHttpClient.Builder()
.build();
这里使用了Builder模式进行创建,其实也可以通过new 的方式直接创建,但是如果要进行一些复杂的配置还是建议使用Builder模式
Get请求
这里推荐一个好用的HttpApi网站JSONPlaceholder,他提供了一些常见的Api服务,可以给客户端用来测试是否可以正常发送请求
java
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://jsonplaceholder.typicode.com/posts/1")
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
System.out.println(response.body().string());
} else {
System.err.println("Request failed: " + response.code());
}
} catch (IOException e) {
e.printStackTrace();
}
}
这里我们的Request请求是通过创建一个Request实体实现的,里面可以放我们的请求的url以及Parm
返回的Response类就是相应的信息,需要使用try-with-resource语法包围一下