XSnow 基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载、UI模块,基本都是项目中必用功能,每个模块充分解耦,...、主机URL、请求头、请求参数、代理、拦截器、Cookie、OKHttp缓存、连接超时时间、读写超时时间、失败重试次数、失败重试间隔时间的一系列配置。...支持OKHttp本身的Http缓存,也支持外部自定义的在线离线缓存,可配置缓存策略,共有五种缓存策略,如优先获取缓存策略,具体实现参考http包下的strategy包。...支持失败重试机制,可配置失败重试次数以及重试时间间隔。 支持根据Tag中途取消请求,也可以取消所有请求。...数据库 简介: 采用greenDao数据库,其优势就不多说了,网上有解释,其主要优点就是性能高。
由于各种各样的原因我们可能会出现请求偶然失败,这时候我们就可能需要使用ribbon的重试功能,zuul默认结合ribbon zuul: retryable: true #开启重试 ribbon:...决定切换次数) 上面配置一共会调用4次(原本主机1次,失败重试,切换主机调用一次 失败重试1次) ribbon 总超时时间(conn_time+read_time)(MaxAutoRetries + 1...我们可以使用okhttp来替换 okhttp优点: 1.对同一个主机发出的所有请求都可以共享相同的套接字连接。...4.OkHttp 也提供了对 HTTP 响应的缓存机制,可以避免不必要的网络请求。 5.当网络出现问题时,OkHttp 会自动重试一个主机的多个 IP 地址。 1.引入依赖 OKHttp 支持 --> com.squareup.okhttp3 okhttp</artifactId
现在OKHttp没有提供获取响应体的异步API。...否则两个缓存实例会互相损害,损坏换成,可能是你的应用崩溃。 响应缓存使用HTTP的header来配置。...OKHttp支持连接,读,写超时。...会自动重试认证请求。...将会重新实现一个带有凭证的请求,如果没有凭证可用跳过重试,返回null。 使用Response.challenges()来获取任何认证口令的方案和域。
OkHttp是一个Java和Android的HTTP和HTTP/2的客户端,负责发送HTTP请求以及接受HTTP响应。 一、使用OkHttp OkHttp发送请求后,可以通过同步或异步地方式获取响应。...下面分别介绍: Request 每一个HTTP请求包含一个URL、一个方法(GET或POST或其他)、一些HTTP头。请求还可能包含一个特定内容类型的数据类的主体部分。...OkHttp将会重定向获取最终的响应。 请求重试 有时连接会失败,那么OkHttp会重试别的路由。 Call 当重写、重定向等时,一个请求可能会产生多个请求和响应。...允许短路,可以不调用Chain.proceed()方法 允许重试和发送多条请求,调用Chain.proceed()方法 网络拦截器 可以操作中间状态的响应,比如重定向和重试 不调用缓存的响应 可以观察整个网络上传输的数据...进行GET的同步、异步请求,对于HTTP其他方法,比如POST等都是可以进行的,这儿就不过多介绍了,想了解的朋友可以到OkHttp Github地址查看.
HTTP请求和响应都有固定的格式,比如请求方法(GET、POST、PUT、DELETE等),这些方法就像是你给朋友信里的不同指令。...GET是用来获取数据的,POST是用来提交数据的,PUT和DELETE就更少见些,用来更新和删除数据。...缺点 依赖OkHttp:Retrofit底层依赖OkHttp,所以需要同时引入OkHttp。...OkHttp就像是一个专业的邮递员,能高效地帮你发送和接收信件。 优点 高效:支持HTTP/2和同步/异步请求,性能出色。 功能强大:支持连接池化、自动重试和恢复、响应缓存等。...如何实现网络请求的重试机制? 重试机制就像是邮递员送信失败后,再试几次。在Retrofit和OkHttp中,可以通过拦截器实现重试机制。
com.squareup.okhttp3 okhttp, Any>url: 目标服务地址method:请求方法head:请求头body:请求参数简单post示例Request request...Request.Builder() .url(url) .header("name", "value") .post...OKHttp的构建出发。...class RetryInterceptor implements Interceptor { private static final int MAX_RETRIES = 3; // 设置最大重试次数
okHttp3RequestFactory(){ OkHttp3ClientHttpRequestFactory requestFactory = new OkHttp3ClientHttpRequestFactory...okHttp3RequestFactory){ return new RestTemplate(okHttp3RequestFactory); } } 为了使用ribbon负载均衡...=3 7.2 重试 Ribbon重试有不少需要注意的地方,这里分享4个。...1.同一实例最大重试次数,不包括首次调用,配置如下: serviceC.ribbon.MaxAutoRetries=1 这个次数不包括首次调用,配置了1,重试策略会先尝试在失败的实例上重试一次,如果失败...默认值为1: serviceC.ribbon.MaxAutoRetriesNextServer=1 3.是否对所有操作都重试,如果改为true,则对所有操作请求都进行重试,包括post,建议采用默认配置
OkHttp是什么 OkHttp是一个HTTP客户端,它不只是简单的发送请求和接收响应,还包含了失败重试、响应缓存等特性功能,并且能支持同步和异步请求。...IOException("Unexpected code " + response); System.out.println(response.body().string()); } } 跳过重试...Authorization"))) { return null; // If we already failed with these credentials, don't retry. } 重试次数...官网 https://square.github.io/okhttp/ Recipes https://square.github.io/okhttp/recipes/ 源码 https://github.com.../square/okhttp
OkHttp 系列文章目录 【OkHttp】OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置...networkSecurityConfig | 配置 ViewBinding | 代码示例 ) 【OkHttp】OkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求...| 同步 Post 请求 | 异步 Post 请求 ) 【OkHttp】OkHttp 上传图片 ( 获取 SD 卡动态权限 | 跳转到相册界面选择图片 | 使用 OkHttp 上传图片文件 ) 【OkHttp...OkHttpClient() { this(new Builder()); } 分析 OkHttpClient.Builder 创建者中可以设置的成员 : 调度器 : 处理 Get / Post...Socket 连接 , HTTPS 中的 TLS ( 配置安全传输层协议 ) 版本 和 密码套件 ; List connectionSpecs; 拦截器 : 监听 , 重写 , 重试
在非关系型数据库中,我们选取了几种主流的数据库进行对比。这里列出其中应用较为广泛的 MongoDB 以及 DynamoDB 进行对比,如下表所示。...根据上述对比,基于 DynamoDB 有着更加完善的安全服务及灾备容错能力,并且与 FreeWheel 的 AWS 云服务相匹配,因此我们最终决定选用 DynamoDB 作为迁移的数据库对象。...3 DynamoDB 技术特性 AWS DynamoDB 是一种完全托管的无服务器(Serverless)类型的 NoSQL 数据库,可以通过 HTTP API 来使用。...这个过程中我们发现 NoSQL 带来的性能提升还是很大的,比如原来在 MySQL 中一个更新需求涉及到多张表可能需要建立几个甚至更多的数据库链接,而在 DynamoDB 中只要一个数据库操作就能完成整条记录的更新...针对这一问题,我们在服务端增加了重试逻辑,如果没有拿到新创建的数据,最多会重试三次。
譬如用户请求一篇长文,在数据库里有很多个段落,我们也不希望一次性全部查询完毕再返回给客户端(耗时太久),而是希望查一段就返回一段,逐次批量返回给客户端。...下面我们可以发起个http客户端请求去查看效果,这里我们使用okhttp客户端。...pom依赖: com.squareup.okhttp3 okhttp...WRITE_TIME_OUT = 10; public final static int READ_TIME_OUT = 40; /** * client * 配置重试...Request.Builder(); buildHeader(builder, headers); Request request = builder.url(url).post
它大概长这个样子: // Get请求 // 并以 String 类型接受数据 String str = Forest.get("/").executeAsString(); // Post请求 //... 引用类传递泛型参数 // 就可以将响应数据以带复杂泛型参数的类型接受了 Result> userList = Forest .post("/") .execute(new...("/") .backend("okhttp3") // 设置后端为 okhttp3 .contentTypeJson() // 设置 Content-Type... 1 .addBody("b", 2) // 添加 Body 项(键值对: b, 2 .maxRetryCount(3) // 设置请求重试次数为...请求成功条件/重试条件 @Success 注解 先要定义 SuccessWhen 接口的实现类 public class TestSuccessWhen implements SuccessWhen {
Java中远程调用的技术有很多,如:webservice、socket、rmi、Apache HttpClient、OkHttp等,互联网项目使用基于http的客户端较多,本项目使用OkHttp。...spring-cloud-starter-netflix-ribbon com.squareup.okhttp3... okhttp 2、配置Ribbon参数 这里在课程管理服务的application.yml...中配置ribbon参数 ribbon: MaxAutoRetries: 2 #最大重试次数,当Eureka中可以找到服务,但是服务连不上时将会重试 MaxAutoRetriesNextServer...: 3 #切换实例的重试次数 OkToRetryOnAllOperations: false #对所有操作请求都进行重试,如果是get则可以,如果是post,put等操作没有实现幂等的情况下是很危险的
OkHttp的功能 OkHttp是Android以及Jdk中封装了一套关于网络协议的库。...主要实现了网络相关的功能: 支持Http1.0以及Http2.0 支持WebSocket 支持RESTFul的网络API 实现Post、Get、Delete等请求 内部处理重试以及重定向 允许增加请求缓存...OkHttp的使用 OkHttp的使用也非常简单。...OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder(); clientBuilder.addInterceptor(...); // 生成Post...会完成以下事情: 对Request的Interceptor的处理 创建Socket连接,发送Http请求报文 接收响应报文,处理请求失败的重试,以及302等重定向 处理缓存策略 而这一切,都在interceptors
OkHttp3ClientHttpRequestFactory。...所以我个人更建议大家将底层HTTP实现切换为okHTTP。...切换为okHTTP 首先通过maven坐标将okHTTP的包引入到项目中来 com.squareup.okhttp3 重试 exclude:指定异常不重试,默认空。...如果 include也为空时,所有异常都重试 maxAttemps:最大重试次数,默认3 backoff:重试等待策略,默认空 @Backoff注解为重试等待的策略,参数说明: delay:指定重试的延时时间
用于存储联系信息的简化的数据库表模式。它是个带有电子邮件、电话、设备令牌和外部通道的单个NoSQL DynamoDB表。...查询数据库以获取生成通知事件所需的数据。 将通知数据推送到事件总线以进行并行处理。 联系人数据库 — 存储有关用户、联系信息、设置等数据的DynamoDB表。...关键是: 事件和推送通知中的安全性 通知模板和设置 可靠性和弹性 重试机制 速率限制 监视队列中的通知和事件跟踪 事件和推送通知的安全性 在存储敏感数据的情况下,我们应该启用DynamoDB的数据保护,...为了满足此要求,通知系统将通知数据持久保存在另一个日志表中,并实施重试机制。 接收一条通知确切地一次吗? — 不,不可以。...重试机制 当SNS/第三方服务无法发送通知时,通知将被添加到死信队列进行重试。如果问题仍然存在,将向负责的开发人员发送警报。 速率限制 我们应该考虑礼貌地发送通知。
Retrofit2通过OKHttp的拦截器拦截http请求进行监控,重写或重试等,包括日志打印等。...retryOnConnectionFailure:错误重联 addInterceptor:设置应用拦截器,可用于设置公共参数,头信息,日志拦截等 addNetworkInterceptor:网络拦截器,可以用于重试或重写...@POST("add") Call> addUser(@Body User user); @Field,@FieldMap:Post方式传递简单的键值对, 需要添加@FormUrlEncoded...我们可以通过自定义Interceptor来实现很多操作,打印日志,缓存,重试等等。...可参照: Retrofit+RxJava实战日志(3)-网络异常处理 retrofit-2-simple-error-handling 网络状态监听 一般在没有网络的时候使用缓存数据,有网络的时候及时重试获取最新数据
Database Lab 是一个快速克隆大型数据库构造非生产环境的工具。 sqlite_fdw 新版本发布2.1.1. sqlite_fdw 是一个用于读写 sqlite 数据库的 fdw 插件。...DynamoDB FDW 新版本发布1.1.0. DynamoDB FDW是一个用于读写DynamoDB的fdw插件。...没有超级用户,如何修复 PostgreSQL 集群 EXPLAIN (ANALYZE) 需要 BUFFERS 来改进 Postgres 查询优化过程 限速系列1 —— 串行隔离级别+竞态,如何使用SQL避免数据损坏
所以我个人更建议大家将底层HTTP实现切换为okHTTP。 切换为okHTTP 首先通过maven坐标将okHTTP的包引入到项目中来。...通用的异常的处理机制:那就是自动重试。...服务不存在所以抛出404异常,是为了触发重试机制。...如果 exclude也为空时,所有异常都重试 exclude:指定异常不重试,默认空。...如果 include也为空时,所有异常都重试 maxAttemps:最大重试次数,默认3 backoff:重试等待策略,默认空 @Backoff注解为重试等待的策略,参数说明: delay:指定重试的延时时间
领取专属 10元无门槛券
手把手带您无忧上云