okhttp

纯干货Android知识点整理(二)

放肆的年华 提交于 2020-08-12 17:52:15
本篇为第二篇整理的文章,第一篇的链接 纯干货Android知识点整理(一) 1.OkHttp解析 首先 OkHttp 内部是一个门户模式,所有的下发工作都是通过一个门户 Dispatcher 来进行分发。 然后在网络请求阶段通过责任链模式,链式的调用各个拦截器的 intercept 方法。其中有 2 个比较重要的拦截器:CacheInterceptor 和 CallServerInterceptor。它们分别用来做请求缓存和执行网络请求操作。 最后在理解源码实现的基础上,对 OkHttp 的功能进行了一些扩展,实现了网络请求进度的实现。 BridgeInterceptor:主要对 Request 中的 Head 设置默认值,比如 Content-Type、Keep-Alive、Cookie 等。 CacheInterceptor:负责 HTTP 请求的缓存处理。 ConnectInterceptor:负责建立与服务器地址之间的连接,也就是 TCP 链接。 CallServerInterceptor:负责向服务器发送请求,并从服务器拿到远端数据结果。 2.Bitmap解析 默认情况下 BitmapFactory 使用 Bitmap.Config.ARGB_8888 的存储方式来加载图片内容,而在这种存储模式下,每一个像素需要占用 4 个字节。因此上面图片 rodman

Android网络库的比较:OkHTTP,Retrofit和Volley [关闭]

巧了我就是萌 提交于 2020-08-12 05:20:43
问题: Two-part question from an iOS developer learning Android, working on an Android project that will make a variety of requests from JSON to image to streaming download of audio and video: 来自学习Android的iOS开发人员的一个分为两个部分的问题,该问题涉及一个Android项目,该项目将提出从JSON到图像到音频和视频流下载的各种请求: On iOS I have used the AFNetworking project extensively. 在iOS上,我广泛使用了 AFNetworking 项目。 Is there an equivalent library for Android? 是否有适用于Android的等效库? I've read up on OkHTTP and Retrofit by Square, as well as Volley but don't yet have experience developing with them. 我已经阅读了Square的 OkHTTP 和 Retrofit ,以及 Volley, 但还没有与它们一起开发的经验。 I'm

解决okhttp无法重用连接的问题

旧城冷巷雨未停 提交于 2020-08-12 04:52:17
解决okhttp无法重用连接的问题 最近在一个程序中使用okhttp调用http接口。开始时一切正常,但是测试运行一段时间后,okhttp就会报告recv失败。同时在调用端机器上,netstat显示很多套接字是TIMEWAIT状态。原来每次调用接口,okhttp都建立了一个新连接。而被调用的服务器在连接超过一定数量后会拒绝服务。 最初的想法是用连接池降低连接数。 OkHttpClient httpClient = new OkHttpClient .Builder() .connectionPool(new ConnectionPool(5, 20, TimeUnit .SECONDS)) .build(); 可是运行一段时间后,又出现了recv失败和大量的TIMEWAIT。连接池方法无效。为什么会这样呢?上网搜索一番,发现StackOverflow上有人提到,如果Request或Response的头部包含Connection: close,okhttp会关闭连接。下断点调试,果然服务器返回了Connection: close。okhttp的CallServerInterceptor在收到应答后,直接关闭了连接。 要怎么处理这种情况呢?直观的想法是用拦截器拦截应答,覆盖http头。 OkHttpClient httpClient = new OkHttpClient

详谈字节跳动2020年Android开发岗社招真题,看看你能走到哪一步?

こ雲淡風輕ζ 提交于 2020-08-12 04:20:33
首先说一下,今日头条的面试主要分为 三轮到四轮 ,如果是 旺季面三轮 ,首先是基础面试, 基本面试一般10个题左右 ,最近 面试了一下字节跳动的移动Android资深工程师 , 记录下博客 。 现在 网络疯传都2020年了,Android开发早凉了!是真的吗? 我相信 很多朋友对职业规划很迷茫! 推荐阅读 :( 2020年Android开发人员打破寒冬期的利器在哪里?是转行还是进阶? ) 这篇文档会帮你在迷茫中指明方向! 第一面是 北京的开发进行视频面试 ,有 理论和编程题 组成。用的是在线编程工具,如下图。 第一面 1、请你编程实现单例模式,懒汉和饱汉写法? //饱汉写法public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } //懒汉写法 private static final Singleton1 single = new Singleton1(); //静态工厂方法 public static Singleton1 getInstance() { return single; }

Java 添加、删除、替换、格式化Word中的文本(基于Spire.Cloud.SDK for Java)

北慕城南 提交于 2020-08-12 02:52:38
Spire.Cloud.SDK for Java提供了TextRangesApi接口可通过addTextRange()添加文本、deleteTextRange()删除文本、updateTextRangeText()替换文本、updateTextRangeFormat()格式化文本等。本文将从以上方法介绍如何来实现对文本的操作。可参考以下步骤进行准备: 一、导入jar 文件 创建Maven 项目程序,通过 maven 仓库下载导入。 以IDEA为例,新建Maven项目,在pom.xml文件中配置maven仓库路径,并指定spire.cloud.sdk的依赖,如下: < repositories > < repository > < id > com.e-iceblue </ id > < name > cloud </ name > < url > http://repo.e-iceblue.cn/repository/maven-public/ </ url > </ repository > </ repositories > < dependencies > < dependency > < groupId > cloud </ groupId > < artifactId > spire.cloud.sdk </ artifactId > < version > 3.5.0

精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用

痴心易碎 提交于 2020-08-11 17:59:21
一、什么是 RestTemplate? RestTemplate 是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。也就是说RestTemplate是一个封装,底层的实现还是java应用开发中常用的一些HTTP客户端。但是相对于直接使用底层的HTTP客户端库,它的操作更加方便、快捷,能很大程度上提升我们的开发效率。 RestTemplate 作为spring-web项目的一部分,在Spring 3.0版本开始被引入。RestTemplate类通过为HTTP方法(例如GET,POST,PUT,DELETE等)提供重载的方法,提供了一种非常方便的方法访问基于HTTP的Web服务。如果你的Web服务API基于标准的RESTful风格设计,使用效果将更加的完美。 根据Spring官方文档及源码中的介绍,RestTemplate在将来的版本中它可能会被弃用,因为他们已在Spring 5中引入了WebClient作为非阻塞式Reactive HTTP客户端。但是RestTemplate目前在Spring 社区内还是很多项目的“重度依赖”,比如说Spring Cloud。另外,RestTemplate说白了是一个客户端API封装

接地气的面试记录:记一次Android面试心得

家住魔仙堡 提交于 2020-08-10 04:47:44
最近看到很多人都在找工作, 而且很多人都感觉今年找工作比去年难很多, 竞争力也增加不少, 因此激发我整理这份资料, 希望能帮到正在找或者准备找工作的童鞋们. 首先我们能否获得一个面试机会, 那肯定是从简历开始, 简历需要做好功夫, 一份好的简历才足够吸引企业得到面试机会, 接着就是面试了, 面试前必须要先做好准备, 多看一下前辈们总结面试题, 有哪一方面不足的地方赶紧补充一下, 还有要了解一下你即将面试那家公司. 一、简历 网上有很多对程序员简历的一些指导,这里就不重述,大家可以搜下网上其他大神的总结,结合自身情况修改下。我有几点建议: 1.尽量不要花哨,程序员和设计师或者产品运营还不一样,我们的简历成功与否决定权还是在技术面试官那,而他们 看重的是你的项目经验内容和技术等描述。 2. 技能描述这块尽量只写你懂得而且理解深刻的, 可以适当加入一些新技术或流行框架,不过这块需要理解,没来得及看源码的可以看看大神们对它的总结,网上一大堆。 3. 项目经验这块尽量加入关键词, 比如使用了什么技术、用到哪些设计模式、优化数据对比、扩展总结之类的。而非一味地介绍这个项目内容(那是产品经理的描述),比如性能优化这块,分为UI性能优化、内存优化、数据库优化、网络优化、耗电优化等等。可以从 1).如何发现问题 2).怎么解决问题 3).解决效果对比,这几个方面去描述。举个简单例子——UI优化

Java 将PDF/XPS转为Word/html /SVG/PS/PCL/PNG、PDF和XPS互转(基于Spire.Cloud.SDK for Java)

时光毁灭记忆、已成空白 提交于 2020-08-10 01:47:55
Spire.Cloud.SDK for Java提供了接口PdfConvertApi通过convert()方法将PDF文档以及XPS文档转为指定文档格式,如转PDF为Word(支持Docx、Doc)、Html、XPS、SVG、PS、PCL、PNG,将XPS转为Word(支持Docx、Doc)、Html、PDF、SVG、PS、PCL、PNG等。文本将通过Java示例介绍具体实现方法。首先请参考以下步骤准备程序运行环境: 一、导入jar 文件。 (有2种方式) (推荐)方式1. 创建Maven 项目程序,通过 maven 仓库下载导入。 以IDEA为例,新建Maven项目,在pom.xml文件中配置maven仓库路径,并指定spire.cloud.sdk的依赖,如下: < repositories > < repository > < id > com.e-iceblue </ id > < name > cloud </ name > < url > http://repo.e-iceblue.cn/repository/maven-public/ </ url > </ repository > </ repositories > < dependencies > < dependency > < groupId > cloud </ groupId > < artifactId

retrofit应用详解与源码解析--概述

試著忘記壹切 提交于 2020-08-09 13:22:42
调用更加方便,更加安全,架构清晰,代码简洁,反对臃肿,代码之间的耦合度更低,这是一个好软件永远所追求的目标,Retrofit和OkHttp一样都是Jake Wharton大神的杰作,读书要读经典,学框架也要学经典,因为经典它经得起历史的考验,得到了人们的认可,我们不但要学会用,还要学习框架所体现出来的优秀的设计思想,设计原则,设计技巧和设计模式,以及脱离框架类似功能的实现方法,retrofit是基于okhttp构建的,因此retrofit所有的工作都是围绕RequestBody和ResponseBody展开的,Retrofit可以把一个接口里面定义的方法通过注解的方式把它适配成HTTP的请求命令 文章目录 专栏介绍 Jake Wharton的杰作 Retrofit是什么 工作流程 与其他框架的对比 小结 专栏介绍 上一期的专栏我们主要给大家介绍了okhttp相关的一些知识点,那么这期的专栏我们将要介绍okhttp的好搭档retrofit,retrofit也是一个网路通信框架,只不过okhttp是基于http的底层框架,而retrofit是对okhttp更进一步的封装,使其调用更加的方便。 本专栏的具体大纲如下: retrofit应用详解与源码解析–概述 retrofit应用详解与源码解析–使用初体验之get请求和post请求 ret 来源: oschina 链接: https:/

Java http request GET causes timeout exception while it works fine in the browser

耗尽温柔 提交于 2020-08-09 09:22:11
问题 I have been playing with Http in Java and I faced a strange problem. Below is a piece code which executes GET method: OkHttpClient client = new OkHttpClient(); client.setConnectTimeout(100, TimeUnit.SECONDS); client.setReadTimeout(100, TimeUnit.SECONDS); Response response = null; Request request = new Request.Builder() .url("https://www.celebritycruises.com/") .get() .build(); try { response = client.newCall(request).execute(); System.out.println(response.code()); } catch (IOException e) { e