# 开发文档 ## [OkHttp](https://square.github.io/) - [源码](https://github.com/square/okhttp) - [Kotlin 入门指南](https://www.kotlincn.net/docs/reference/) ### 线程控制 - OkHttp 的 Dispatcher 通过 ExecutorService 实现 HTTP 通信功能(默认线程池最大数量为 Int.MAX_VALUE,有撑爆内存的风险) - [ExecutorService](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html) 可选实现类:AbstractExecutorService, ForkJoinPool, ScheduledThreadPoolExecutor, ThreadPoolExecutor - [BlockingQueue](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html) 实现队列功能,可选实现类:ArrayBlockingQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedTransferQueue, PriorityBlockingQueue, SynchronousQueue ## 主要功能 ### 同步/异步请求 - [Dispatch](https://square.github.io/okhttp/calls/#dispatch) - [OkHttpClient](https://square.github.io/okhttp/4.x/okhttp/okhttp3/-ok-http-client/) - [ConnectionPool](https://square.github.io/okhttp/4.x/okhttp/okhttp3/-connection-pool/) - [Interceptors](https://square.github.io/okhttp/interceptors/) 可使用拦截器记录请求轨迹 - [示例代码](https://square.github.io/okhttp/recipes/) - 失败重试 - 超时设置 - 返回数据缓存 - 请求连接池 ### 性能提升 1. 当前向 Header 中添加数据,会使用正则校验数据是否符合 ISO-8859-1 编码格式。 确认 Header 中没有 ISO-8859-1 以外的编码,可以使用 addUnsafeNonAscii 方法不校验 Header 中的 Value ```java Headers.Builder headerBuilder = new Headers.Builder(); headerBuilder.addUnsafeNonAscii(key, value); ```