OkHttp踩坑记:为何 response.body().string() 只能调用一次? (mp.weixin.qq.com)

【简介】

想必大家都用过或接触过 OkHttp,我最近在使用 Okhttp 时,就踩到一个坑,在这儿分享出来,以后大家遇到类似问题时就可以绕过去。

只是解决问题是不够的,本文将 侧重从源码角度分析下问题的根本,干货满满。

点击查看原文 >>

@code小生 2019-10-13 23:36 / 0个评论
赞过的人: @IT技术博客大学习 @code小生
要不要再学学下面的文章?
Java程序调用外网API时CA问题 (lisenhui.cn)
Java 安全设置问题常常让开发者头疼,特别是与 cacerts 证书库相关的配置。本文详细解读了 Java 中的 cacerts 文件问题,帮助你排除常见错误,并提供了实用的解决方案。通过这些技巧,你可以更好地管理证书库,提升应用安全性。如果你在 Java 开发中遇到证书问题,千万不要错过!
by @技术头条 2024-09-08 23:22 查看详情
使用eBPF编写系统调用跟踪器 (colobu.com)
本文总结了如何使用eBPF编写一个名为BeeTracer的系统调用跟踪器。文章介绍了eBPF的基本概念及其优势,并详细描述了在Rust中实现该工具的步骤。通过利用eBPF的tracepoints和maps功能,BeeTracer可以高效地捕获并记录Linux系统调用的细节。作者还提供了代码示例,展示了如何在内核空间进行实时跟踪。
by @技术头条 2024-08-06 07:57 查看详情
服务调用的演进历史 (www.codedump.info)
这个题目稍微有点大,纯粹是一篇科普文,将我所了解到的解决“服务调用”相关的技术演进历史简述一下,本文专注于演化过程中每一步的为什么(Why)和是什么(What)上面,尽量不在技术细节(How)上面做太多深入。
by @技术头条 2024-03-13 13:33 查看详情
Redis 存储对象信息是用 Hash 还是 String (zhuanlan.zhihu.com)
Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(String)、链表(List)、哈希结构(Hash)、集合(Set)、有序集合(Sorted set)。
by @又拍云 2021-06-03 09:59 查看详情
Android OkHttp 拦截器(修改url) (mp.weixin.qq.com)
最近在项目里遇到类似配置化域名的需求,分享和记录下是什么实现的。用过OKHttp的肯定对拦截器不陌生。Interceptor,我们可以自定义设置OKHttp的拦截器之一,每次网络请求它都只执行一次拦截,而且它是的第一个触发拦截的,如果想对拦截器进一步了解,可以搜索相关文章,本章只做url修改配置的操作。
by @code小生 2020-12-20 14:43 查看详情
Dubbo-go 源码笔记(二)客户端调用过程 (developer.aliyun.com)
有了上一篇文章《Dubbo-go 源码笔记(一)Server 端开启服务过程》的铺垫,可以类比客户端启动于服务端的启动过程。其中最大的区别是服务端通过 zk 注册服务,发布自己的ivkURL并订阅事件开启监听;而客户应该是通过zk注册组件,拿到需要调用的serviceURL,更新invoker并重写用户的RPCService,从而实现对远程过程调用细节的封装。
by @可耐芊小仙女 2020-11-12 10:59 查看详情
OkHttp3源码解析(整体流程) (mp.weixin.qq.com)
今天主要讲一下OkHttp3源码解析(整体流程),主要分为四大块:
okhttp的基本用法
OkHttpClient分析
Request分析
Call分析 {同步请求与异步请求}
by @code小生 2019-09-17 17:24 查看详情
只想着一直调用一直爽, 那API凭证泄漏风险如何破? (yq.aliyun.com)
如今各家云厂商都通过给用户提供API调用的方式来实现一些自动化编排方面的需求。为了解决调用API过程中的通信加密和身份认证问题,大多数云厂商会使用同一套技术方案—基于非对称密钥算法的鉴权密钥对,这里的“密钥对”即API凭证,是云上用户调用云服务API、访问云上资源的唯一身份凭证。
by @可耐芊小仙女 2019-04-12 17:00 查看详情
RxJava2+Retrofit2+RxLifecycle3+OkHttp3网络请求封装 (mp.weixin.qq.com)
入职公司后,公司要求组件化开发,经过讨论后我将网络请求框架单独进行了封装,不过当时框架里将常用的 util 和 ui 均放入到了共同的 Common 包下,导致里面部分代码耦合,后来为了降低耦合性又将 Common 拆分为了lib_common和lib_ui,但是 lib_ui 依赖了 lib_common,还是导致部分代码耦合,最新一期为了降低组件之间的耦合性,所以单独将 lib_common 中的网络请求单独拆分,并且我又做了新的封装和完善,总之网络框架经过3次大的改造后,使用已经非常稳定了。
by @code小生 2019-01-27 16:54 查看详情
尾调用、优化和 ES6 (linux.cn)
在探秘“栈”的倒数第二篇文章中,我们提到了尾调用tail call、编译优化、以及新发布的 JavaScript 上合理尾调用proper tail call。

当一个函数 F 调用另一个函数作为它的结束动作时,就发生了一个尾调用。在那个时间点,函数 F 绝对不会有多余的工作:函数 F 将“球”传给被它调用的任意函数之后,它自己就“消失”了。这就是关键点,因为它打开了尾调用优化的“可能之门”:我们可以简单地重用函数 F 的栈帧,而不是为函数调用 创建一个新的栈帧,因此节省了栈空间并且避免了新建一个栈帧所需要的工作量。下面是一个用 C 写的简单示例,然后使用 mild 优化 来编译它的结果。
by @技术头条 2018-06-28 12:18 查看详情