SpringBoot中使用OkHttp

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();
                    // ...
                }

            }
        });
    }
 }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值