1、先导入OKhttp依赖
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp-sse</artifactId>
<version>3.14.9</version>
</dependency>
2、配置参数
okhttp:
proxy:
enable: true # 启用代理
host: 127.0.0.1 #代理IP
port: 15777 #端口
connectTimeout: 50 #链接超时时间
readTimeout: 50 # 读取超时时间
writeTimeout: 10 # 写入超时时间
connectionPool: # 连接池配置
maxConnect: 5 # 连接池的最大空闲连接数
keepAlive: 10 # 每个连接的最大请求数
3、将OkhttpClient注入IOC容器中
@Configuration(value = "okhttp")
public class OkHttpConfig {
@Value("${okhttp.proxy.enable}")
private boolean enable;
@Value("${okhttp.proxy.host}")
private String proxyHost;
@Value("${okhttp.proxy.port}")
private int proxyPort;
@Value("${okhttp.proxy.connectTimeout}")
private int connectTimeout;
@Value("${okhttp.proxy.readTimeout}")
private int readTimeout;
@Value("${okhttp.proxy.writeTimeout}")
private int writeTimeout;
/**
* 连接池的最大空闲连接数
*/
@Value("${okhttp.proxy.connectionPool.maxConnect}")
private int maxConnect;
/**
* 每个连接的最大请求数
*/
@Value("${okhttp.proxy.connectionPool.keepAlive}")
private int keepAlive;
@Bean
public OkHttpClient okHttpClient() {
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.callTimeout(connectTimeout, TimeUnit.SECONDS)
.connectTimeout(connectTimeout, TimeUnit.SECONDS) // 设置连接超时时间
.readTimeout(readTimeout, TimeUnit.SECONDS) // 设置读取超时时间
.writeTimeout(writeTimeout, TimeUnit.SECONDS) // 设置写入超时时间
.retryOnConnectionFailure(false) // 是否自动重试连接失败的请求
.connectionPool(new ConnectionPool(maxConnect, keepAlive, TimeUnit.MINUTES)); // 设置连接池;
if (enable) {
builder.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)));
}
return builder.build();
}
}
4、最后将OkHttpClient注入到要发送请求的类中
```public class HttpUtil {
@Autowired
private OkHttpClient okHttpClient;
public void test() {
Request.Builder builder = new Request.Builder()
.url("https://baidu.com")
.get(body);
Call call = okHttpClient.newCall(builder.build());
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.body() != null) {
String res = response.body().string();
// ...
}
}
});
}
}