websocket 给人的印象就是使用非常简单,比原生Socket像 Netty 等简单很多。...无论服务端还是客户端都很简单 OkHttp3 也是支持WebSocket的,因为 android 网络请求基本都用OkHttp3,所以没必要引入其他的框架了。...import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.Handler...; import android.os.IBinder; import android.util.Log; import androidx.annotation.Nullable; import okhttp3....OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.WebSocket; import okhttp3
相信很多Android开发者很多都遇到过android.os.NetworkOnMainThreadException 这个异常,意思就是主线程进行网络操作异常。...严格模式 在早期的Android版本(2.3之前)中,Google并没有提供一个很严格的程序编写要求,所以在那时我们可以在主线程中执行本地IO操作,网络操作等这些不规范的行为。...android.os.NetworkOnMainThreadException这个异常从Android 3.0(API 11)引入,出现情况为主线程进行网络操作。...,可以避免NetworkOnMainThreadException异常。...上述AsyncTask为一个匿名内部类的对象,由于Java中非static内部类实例会持有外部类实例的引用,AsyncTask实例持有Activity的引用,这样很容易引起内存泄露 按照Android
场景:初入职场的小码在开发Android时发现官方推出的HttpURLConnection库没流行多久,就被一个OkHttp的半路截胡迅速统治了Android网络请求库。甚至!...Android4.4之后,也是基于OkHttp实现的!小码决定上秋名山找老司机解惑。 老司机!为什么官方的HttpURLConnection4.4 之后也是基于OkHttp实现的。...这个OkHttp怎么那么牛? ? 这陈芝麻烂谷子的事怎么又翻出来了!OkHttp一统天下这么久了都。说起来它可是凭实力上位的甄嬛--网络库界的熹贵妃啊! ? 哦!小三打败正宫娘娘,这个瓜听着都甜啊!...想当年Android最开始的网络请求库用的是HttpClient,怎奈它问题太多。谷歌爸爸就拉出了HttpURLConnection。就像雍正爷用华妃压制皇后一样。 ?...HttpClient在Android 6.0 就彻底领盒饭了就别提它了,快说说OkHttp吧? ? 你说的这个OkHttp就像后来入宫的嬛嬛,她是大理寺卿Square家的。
正好前段时间复习OkHttp源码的时候发现了它是支持Websocket协议的,那就用它试试吧!(戏好多,演不下去了) 开淦! WebSocket介绍 先简单介绍下WebSocket。...OkHttp实现 添加OkHttp依赖 implementation("com.squareup.okhttp3:okhttp:4.7.2") 实现代码 首先是初始化OkHttpClient和WebSocket...所以这里的pingInterval就是设置心跳包发送的间隔时间,设置了这个方法之后,OkHttp就会自动帮我们发送心跳包事件,也就是ping包。...至此可以发现,其实WebSocket传输数据并不是一个简单的事,只是OkHttp都帮我们封装好了,我们只需要直接传输数据即可,感谢这些三方库为我们开发作出的贡献,不知道什么时候我也能做出点贡献呢。...[OkHttp-WebSocket源码.jpg] 参考 OkHttp源码 《WebSocket协议翻译》 附件 OkHttp源码 WebSocket功能实现源码 **** 我的公众号:码上积木,每天三问面试题
问题: Caused by: android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork...$1.lookup(Dns.java:39) at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(...:141) at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:83) at com.android.okhttp.internal.http.StreamAllocation.findConnection...:95) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281) at com.android.okhttp.internal.http.HttpEngine.sendRequest...run() { Document doc = null; try { doc = Jsoup.connect("http://www.baidu.com").get();// Jsoup是我用的一个牛叉的
什么是OkHttp?OkHttp是一个为Android应用和Java虚拟机打造的HTTP客户端!它的设计理念是高效、简洁且强大(这三点真的很难同时做到)。...如果你正在开发Android应用,或者任何需要网络请求的Java程序,OkHttp绝对值得你花时间学习。为什么我们需要OkHttp?直接用HttpURLConnection不行吗?当然可以!...常见错误与解决方案使用OkHttp时可能遇到一些常见问题:NetworkOnMainThreadException:在Android主线程执行网络操作。...NetworkOnMainThreadException:在Android主线程执行网络操作。 解决:使用异步API或在工作线程中执行请求。...是一个强大而优雅的HTTP客户端,它简化了Android和Java应用中的网络请求处理。
代码是无误的,在低版本的API上都可以运行的,但在3.0以上的版本就会出现 NetworkOnMainThreadException 出现Android.os.NetworkOnMainThreadException...错误提示的原因 原因:不允许在主线程中进行网络访问 解决办法:将网络访问的操作单独放到一个线程中,代码如下: new Thread(){ @Override public void...run() { //把网络访问的代码放在这里 } }.start();
本文链接 前言 在某一个界面,用户发起了一个网络请求,因为某种原因用户在网络请求完成前离开了当前界面,比较好的做法是取消这个网络请求。对于OkHttp来说,具体是调用Call的cancel方法。...OkHttp中的tag 要取消一个请求,OkHttp中可以使用cancel方法,参考。 OkHttp的request对象有tag。可以根据tag来标示请求。参考Stack Overflow。...每个Activity的标记名必须唯一。...OkHttp + Retrofit 使用示例 Android OkHttp + Retrofit 取消请求的方法 Android OkHttp + Retrofit 下载文件与进度监听 Android...OkHttp + Retrofit 断点续传
首先,我觉得是对文件的操作不是那么的友好,如文件上传/下载、上传/下载进度监听、断点下载,这些都需要我们进行二次封装,看过Android 史上最优雅的实现文件上传、下载及进度的监听的同学知道,使用RxHttp...; 最后,也是非常重要的一点,那就是Activity/Fragment销毁时,对请求的关闭,通常我们的做法是为请求设置Tag,然后根据此Tag去关闭一系列请求,又或者拿到Call对象,去关闭单个请求,极其的麻烦...baseUrl 单独写在一个变量里,如果每次发请求,我们都需要以baseUrl+url的方式去实现,显然不够友好,那么RxHttp又是如果去解决的呢?...setDomainTo+@Domain注解中指定的name字段的值+IfAbsent,见名思议,此方法是会在域名缺席的情况下,添加我们指定的域名,如果没有指定,就会添加@DefaultDomain注解标记的默认域名...小结 怎么样,是不是最优雅的设置baseUrl?欢迎打脸。 其实,RxHttp远不止本篇文章说的这些优点,更多彩蛋,请查看源码
前言说到Android开发中的网络请求库,OkHttp绝对是绕不过去的存在!!!这个由Square公司开源的HTTP客户端,已经成为了Android开发者心目中的白月光。...什么是OkHttpOkHttp是一个高效的HTTP客户端库,专门为Android和Java应用程序设计。简单来说,它就是帮你在应用中发送网络请求、接收响应的工具。...为什么选择OkHttp说实话,市面上的网络请求库挺多的。那为什么OkHttp能脱颖而出呢?性能出众OkHttp内部做了大量优化。...总结OkHttp作为Android开发中的网络请求利器,确实称得上是行业标杆。它不仅功能强大、性能出色,而且API设计友好,使用起来很舒服。当然,工具再好也需要正确使用。...合理的配置、完善的错误处理、恰当的优化策略,这些都是发挥OkHttp最大威力的关键。最后想说的是,技术在不断发展,OkHttp也在持续迭代。
前言 之前写了一篇当Android遇到Netty - 掘金,里面有用OkHttp与Netty进行对比,但没有详细说明区别,本文便专门讲讲这两个框架之间的区别 OkHttp概述 OkHttp是什么?...OkHttp是一个专为Android和Java应用设计的HTTP客户端库。它简化了HTTP通信,提供了一个高效和直接的方式来发送和接收HTTP请求。...HTTP/2支持:对HTTP/2的支持意味着更高的并发性和更低的延迟。 常见用途 移动应用:在Android平台上进行网络通信时,OkHttp是首选。...同样使用WebSocket通信,为什么使用Netty而不是Okhttp OkHttp WebSocket 简洁易用: OkHttp提供了一个比较简单、易于理解和使用的WebSocket接口。...总结 OkHttp是一个专为Android和Java应用设计的高效HTTP客户端。
本文将介绍两种在Android平台上实现实时通信的主流方法:WebSocket和WebRTC。...一、WebSocket在Android中的应用 1.1 简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。它的主要优点是实时性高,能够实现服务器向客户端的实时推送。...1.2 示例 在Android中,我们可以使用OkHttp库来创建WebSocket连接。...以下是一个使用OkHttp库在Android中创建WebSocket连接的示例: 首先,在build.gradle文件中添加OkHttp依赖: dependencies { implementation...方法创建WebSocket连接: import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.WebSocket; import
概述 在android开发中经常要访问网络,目前最流行的网络访问框架就是Okhttp了,然而我们在具体使用时,往往仍然需要二次封装。我使用Builder设计模式进行了封装形成oknet开源库。...介绍 oknet是一套基于okhttp的android网络http框架,封装了请求参数处理,日志打印。...不等于0 的情形 3.支持文件上传 4.完整清晰的log日志输出 5.支持 公共参数 的配置 6.支持每个http请求的 日志 记录 7.支持 默认异常 的处理 8.支持 移除文件下载(通过...FileDownloader) 适用场景 和服务端产生约定消息结构: 返回的响应的json格式一定为: {code:0, msg:"", body:""} 参数说明: 1.服务端 响应成功 则返回对应的...//配置okhttp 缓存位置 OknetConfig.setExternalCacheDir(getExternalCacheDir()); //OknetConfig.setRequestParaInterceptor
在本文中,我们将介绍三个流行的Android网络库:Volley、Retrofit和OkHttp,并分析它们的优缺点以及适用场景。...它主要解决了Android平台原生HTTP库的一些性能问题。OkHttp支持 HTTP/2 和 WebSocket 协议,可以作为其他网络库的底层实现。...它包含请求的 URL、方法、头部等信息。 Call 类表示一个请求的执行。它可以执行同步请求(execute 方法)或异步请求(enqueue 方法)。 OkHttp 支持 WebSocket 协议。...自动处理重试和超时:OkHttp会自动处理请求的重试和超时问题,简化了开发者的工作。 支持WebSocket:OkHttp支持WebSocket协议,方便进行实时通信。...OkHttp 高性能HTTP客户端,支持HTTP/2和WebSocket。 高性能,支持HTTP/2,自动处理重试和超时,支持WebSocket。
注:如果移动端排版有问题,请看 简书版 (的支持移动端。...背景 公司的文件上传接口使用PUT协议,之前一直用的都是老项目中的上传类,现在项目中使用了okhttp网络库,就查了下资料,在这里分享一下。...代码实现 okhttp 2.7.X /** * @param mediaType MediaType * @param uploadUrl put请求地址 * @param...,你还可以加上自己的各种监听。...下面是okhttp其他方面更加详细的介绍: GitHub:okhttp Android必知必会-使用okhttp的PUT方式上传文件 OkHttp使用教程
它主要解决了Android平台原生HTTP库的一些性能问题。OkHttp支持 HTTP/2 和 WebSocket 协议,可以作为其他网络库的底层实现。...它包含请求的 URL、方法、头部等信息。 Call 类表示一个请求的执行。它可以执行同步请求(execute 方法)或异步请求(enqueue 方法)。 OkHttp 支持 WebSocket 协议。...这是通过 WebSocket 接口和 RealWebSocket 类实现的。可以使用 newWebSocket 方法创建一个 WebSocket 连接。...自动处理重试和超时:OkHttp会自动处理请求的重试和超时问题,简化了开发者的工作。 支持WebSocket:OkHttp支持WebSocket协议,方便进行实时通信。...OkHttp 高性能HTTP客户端,支持HTTP/2和WebSocket。 高性能,支持HTTP/2,自动处理重试和超时,支持WebSocket。
Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP 项目截图 这是我的目录结构 五步使用RxJava+Retrofit2+Okhttp+RxCache 第一步:导包...if (null == mRetrofit) { if (null == mOkHttpClient) { mOkHttpClient = OkHttp3Utils.getOkHttpClient....addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //设置使用okhttp...Android中也可以说采用了当前比较流行的MVC框架,在Android中: 1) 视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入,但是用xml编写了,又需要在...2) 控制层(Controller):Android的控制层的重任通常落在了众多的Acitvity的肩上,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的Acitivity
Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP 项目截图 这是我的目录结构 五步使用RxJava+Retrofit2+Okhttp+RxCache...if (null == mRetrofit) { if (null == mOkHttpClient) { mOkHttpClient = OkHttp3Utils.getOkHttpClient....addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //设置使用okhttp...Android中也可以说采用了当前比较流行的MVC框架,在Android中: 1) 视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入,但是用xml编写了,又需要在...2) 控制层(Controller):Android的控制层的重任通常落在了众多的Acitvity的肩上,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的Acitivity
,https ,然后webservice是啥,跟websocket很像,socket和websocket啥关系长的也很像,session,token,cookie又是啥。...(主要以前也有人问过我在哪里查看xxx第三方库最新的版本,所以想到提一下这个)其实很简单,我们以okhttp为例: Android Studio直接查看: ?...SocketFactory:从字面意思就看的出来,Android 自带的Socket的工厂类。...之后你就可以用OkHttpClient.cancel(tag)来取消所有带有这个tag的call。. */ final MapAndroid技能树 — 网络小结(4)之socket/websocket/webservice 提到过,我们的请求是通过Socket去访问的。 ?
https://micro.blog.csdn.net/article/details/80524361 在某些特殊的情况下,需要对项目中使用的 okhttp 的包名进行修改...OkHttp 版本 ,在 release 里下载对应的源码; 确定上述 OkHttp 版本对应的 OkIo 的版本,在 release 里下载对应的源码; 在 IDEA 里打开 okio 工程 修改...工程, 在 maven 任务里点击 okhttp module 的 compile 编译(必要步骤,不先执行此步骤会找不到某个类) 修改 okhttp module 的 包名 修改 okhttp...module 的 java-templates 的包名,其下的 Version.java 的 package 可能需要手动改 build 检查有无错误,并排除错误 修改 okhttp module...引用库的类时,使用的包名是修改后包名 注意: 源码里有多个 module,注意分辨目标 module OkHttp 版本有专门对应的 OkIo 版本,可通过官方 更新日志 查询 使用 IDEA 的 build