0
g
原创首发

OkHttp 上一次请求被中断,下次请求使用同一个Client 导致请求路径错误问题

ccTyL 发表于 2025-08-09 09:29 579
评论
0/240
  • 断点
    for (Call call : OKHttpClient.client().dispatcher().runningCalls()) { if (tag.equals(call.request().tag())) { call.cancel(); } }
    2025-08-11 09:23  回复
    1139423796017500160
    • ccTyL  回复 @断点
      原来要带tag的吗。不过那个cancelAll() 方法确实存在
      2025-08-11 09:44   回复 1314408005793603584
  • 断点
    for (Call call : OKHttpClient.client().dispatcher().queuedCalls()) { if (tag.equals(call.request().tag())) { call.cancel(); } } 、
    2025-08-11 09:23  回复
    1139423796017500160
    • 断点
      找了下伪代码 Request request = new Request.Builder() .url(url) .post(RequestBody.create(mediaType, requestBody)) .tag(tag) .build()
      2025-08-11 09:22  回复
      1139423796017500160
      • 断点
        描述的中断,是怎么做的,用了那些api做,上面的dispatcher().cancelAll();是谁的api,我用了这么久没用过这个函数,通常取消一个请求,发起请求的时候设置tag,用tag标记,需要取消的时候取消。
        2025-08-11 09:21  回复
        1139423796017500160
        • ccTyL  回复 @断点
          大佬来了,代码是这样的:https://github.com/cctyl/simple-backup/blob/master/app/app/src/main/java/io/github/cctyl/backup/service/BackupService.java 这个文件的358行,是一个进度监听器,回调里有个i()方法,这里会抛出异常
          2025-08-11 09:43   回复 1314408005793603584
        • 断点  回复 @ccTyL
          如果你的业务要取消,那就把请求取消就好了。这个中断我以为是什么中断api,没想到是自己抛出异常。。。
          2025-08-11 10:05   回复 1139423796017500160
        • ccTyL  回复 @断点
          是要取消,但是不仅仅是请求取消,光取消请求做不到我的要求,是要后续的所有流程都要取消。只能这样做,还要什么解决办法吗,抄一下
          2025-08-11 10:13   回复 1314408005793603584
      推荐文章
      浅析 OkHttp 源码 - Callback 的调用流程
      关于 OkHttp 和 Retrofit 的使用,你需要注意的点
      在Retrofit中如何使用多个不同的BaseUrl
      OkHttp中ResponseBody无法第二次调用string方法
      Postman你不知道的小技巧
      Android OkHttp + RxJava 实现断点续传下载更新
      给服务器post数据报错:Expected BEGIN_OBJECT but was STRING at line 1 column 70 path $.data
      OKHttp3访问接口,结果显示:okhttp3.internal.http.RealResponseBody@5fc8ef2
      android开发网络框架OkHttp
      依赖第三方包重复,删掉一个就ok了,我遇到的是网络请求包okhttp3
      记录一下:Opus转码库的使用采坑记
      编译libopus库,各个平台都可以
      java jni开发,System.loadLibraryt()和System.load()区别是什么?
      不用煎,不用炒,就可以实现延时推送
      flutter 过滤相册中包含经纬度的图片如何实现?-by GPT
      记录一下,JavaWeb开发WebSocket里的下线通知
      adb读写粘贴板工具推荐
      如何关闭 kali 系统的工作区切换全局快捷键?
      从文字到世界:空间智能是人工智能的下一个前沿
      MacOS 系统开启任意来源权限
      通过配置 Log 和 Timber 的 ProGuard 规则来移除日志代码调用
      安装了VMware Tools,但无法实现文件的拖拽和复制粘贴---解决方案
      java web如何解析mp3流时长duration
      Gateway+springdoc-openapi整合
      Redisson 红锁模板
      安卓开发Windows电脑新机开荒软件清单
      weapp-tailwindcss +Taroify样式出现层级问题
      解决Objectbox数据库json文件冲突
      Vue3,实现biu~biu~biu~的效果
      遇到一个没有直接给进度监听回调的库怎么办呢?
      文章目录