文档章节

spring传统xml配置okhttp3

亚林瓜子
 亚林瓜子
发布于 2018/06/12 15:55
字数 408
阅读 28
收藏 0

问题

后端服务需要使用http客户端请求其他服务支持,项目中需要将HttpClient换成OKhttp,为啥要换OKhttp?这里不讨论这两者之间的优缺点。这篇文章主要关注与Spring传统xml配置方式集成Okhttp。 之前写过的一篇关于OKhttp3中的cookies文章,转眼就一年的时间了,时间过得真快。

步骤

OkhttpBuilder.java

自定义封装okhttp的构建类。

package com.xxx;

import okhttp3.ConnectionPool;
import okhttp3.OkHttpClient;

import java.util.concurrent.TimeUnit;
/**
 * 自定义Ok http 构建类
 */
public class OkhttpBuilder {
private OkHttpClient.Builder builder = new OkHttpClient.Builder();

/**
 * 连接池
 */
private ConnectionPool connectionPool;

/**
 * 为新连接设置默认连接超时,单位毫秒
 */
private long connectTimeout = 10000;

/**
 * 构建客户端
 * @return okhttp client
 */
public OkHttpClient build(){
        if (connectionPool != null) {
                builder.connectionPool(connectionPool);
        }
        if (connectTimeout != 10000) {
                builder.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS);
        }
        return builder.build();
}

public ConnectionPool getConnectionPool() {
        return connectionPool;
}

public void setConnectionPool(ConnectionPool connectionPool) {
        this.connectionPool = connectionPool;
}

public long getConnectTimeout() {
        return connectTimeout;
}

public void setConnectTimeout(long connectTimeout) {
        this.connectTimeout = connectTimeout;
}
}

spring.xml

spring管理okhttp client,以及okhttp的构建者和连接池。

<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
  	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  	http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	...
	<!-- okhttp3 client -->
	<bean id="okhttpConnectionPool" class="okhttp3.ConnectionPool"/>
	<bean id="builder" class="com.xxx.OkhttpBuilder">
		<property name="connectTimeout" value="100"/>
		<property name="connectionPool" ref="okhttpConnectionPool"/>
	</bean>

	<bean id="okhttpClient" class="okhttp3.OkHttpClient" factory-bean="builder" factory-method="build"/>
	...
</beans>

Controller

注入OKhttp client。

@Autowired
private OkHttpClient okhttpClient;

在控制器中使用:

Request request = new Request.Builder()
                  .url("https://www.google.com/ncr")
                  .addHeader("myheader", "hello header")
                  .get()
                  .build();
Response response = null;
try {
  response = okhttpClient.newCall(request).execute();
  response.body().string();

} catch (IOException e) {
  e.printStackTrace();
} finally {
  if(response != null) {
    response.close();
  }
}

**Note:**一定要在finally中关闭连接,释放资源。

感受

简单方便,上手容易。

参考: Spring XML-Based DI and Builder Pattern Spring FactoryBean应用 spring 集成 okhttp3 Class ConnectionPool

© 著作权归作者所有

共有 人打赏支持
亚林瓜子

亚林瓜子

粉丝 21
博文 193
码字总数 65157
作品 0
长沙
高级程序员
私信 提问
spring传统xml配置okhttp3

问题 后端服务需要使用http客户端请求其他服务支持,项目中需要将HttpClient换成OKhttp,为啥要换OKhttp?这里不讨论这两者之间的优缺点。这篇文章主要关注与Spring传统xml配置方式集成Okhtt...

亚林瓜子
2018/04/19
0
0
spring注解配置okhttp3

背景 之前在spring上面使用过okhttp:spring传统xml配置okhttp3 Component 运行时配置中心,现在还玩不6。 Controller 在控制器中使用: 参考 spring传统xml配置okhttp3 okhttp-logging-inte...

亚林瓜子
2018/12/09
0
0
如何在Spring Boot中开始web3j开发以太坊

通过Spring的依赖注入将web3j集成到Spring Boot应用程序中。此处提供了示例应用程序: 要使用这个github示例,请创建一个新的Spring Boot应用程序,并包含以下依赖项: Maven: Gradle: 现在...

geek12345
2018/11/26
0
0
服务化改造实践(三) | Dubbo + Zipkin

随着业务的发展,应用的规模不断的扩大,传统的应用架构无法满足诉求,服务化架构改造势在必行,以 Dubbo 为代表的分布式服务框架成为了服务化改造架构中的基石。随着微服务理念逐渐被大众接...

阿里云云栖社区
2018/10/24
0
0
ssm 框架总结

用 ssm 为框架做了一个系统的后台,今天做一下关于 ssm 的总结。 一、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-...

什么都不懂的小石
2018/01/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android 通知Notify

MainActivity { private NotificationManager manager; onCreate() { manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); } public void btnNotify(View view......

Coding缘
8分钟前
0
0
Android 人脸识别SDK开发

目前我们的应用内使用了 ArcFace 的人脸检测功能,其他的我们并不了解,所以这里就和大家分享一下我们的集成过程和一些使用心得 集成 ArcFace FD 的集成过程非常简单 在 ArcFace FD 的文档上...

是哇兴哥棒棒哒
9分钟前
0
0
《市场营销》的读后感作文3000字

《市场营销》的读后感作文3000字: 大家好,这是我领读《市场营销》教材的第一篇读书笔记(不了解此事的朋友请阅读和小马宋一起读《市场营销》)。我们这一周阅读的是《市场营销》(以我手里...

原创小博客
13分钟前
0
0
js判断input输入保留正整数和两位小数实现方法

// 均价 checkKeydown(value, e){ this.registerForm.averagePrice = this.changeNumber2(value) }, // 预算 changsoldBudget(value) { this.registerFo......

五个半柠檬
15分钟前
0
0
Kafka+Flink 实现准实时异常检测系统

1.背景介绍 异常检测可以定义为“基于行动者(人或机器)的行为是否正常作出决策”,这项技术可以应用于非常多的行业中,比如金融场景中做交易检测、贷款检测;工业场景中做生产线预警;安防...

架构师springboot
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部