HTTP 失败:java.net.SocketException:套接字关闭改造

2024-02-03

尝试了多种方法仍然面临这个问题

我正在使用 RxJava 和 Retrofit 来完成所有网络操作。下面是我的代码。

服务.kt

@GET("/v1/contact/{id}")
fun getContactDetails(@Path("id") id:String): Flowable<ContactDetailResponse>

AccountRepositoryImpl.kt

 override fun contactDetails(contactId:String) {
    mContactResponse.loading(true)
    remote.getContactDetails(contactId)
            .performOnBackOutOnMain(scheduler)
            .subscribe({
                data -> mContactResponse.success(data)
            },{
                error -> mContactResponse.failed(error)
            })
            .addTo(compositeDisposable)
}

扩展.kt

fun <T> Flowable<T>.performOnBackOutOnMain(scheduler: Scheduler): 
Flowable<T> {
  return this.subscribeOn(scheduler.io())
        .observeOn(scheduler.mainThread())
}

网络模块.kt

@Module
class NetworkModule(val key: String, val secret: String) {

 @Provides
 @Singleton
 fun providesRetrofit(jacksonConverterFactory: JacksonConverterFactory,
                     rxJava2CallAdapterFactory: 
 RxJava2CallAdapterFactory,
                     okHttpClient: OkHttpClient,
                     baseUrl: String): Retrofit {

    return Retrofit.Builder().baseUrl(baseUrl)
            .addConverterFactory(jacksonConverterFactory)
            .addCallAdapterFactory(rxJava2CallAdapterFactory)
            .client(okHttpClient)
            .build()
 }

  @Provides
  @Singleton
  fun providesOkHttpClient(cache: Cache, httpInterceptor: 
  HttpLoggingInterceptor): OkHttpClient {

    val client = OkHttpClient.Builder()
            .cache(cache)
            .addInterceptor(httpInterceptor)
            .retryOnConnectionFailure(true)
            .connectTimeout(100, TimeUnit.SECONDS)
            .writeTimeout(100, TimeUnit.SECONDS)
            .readTimeout(100, TimeUnit.SECONDS)


    return client.build()
  }

}

您可以像下面这样创建您的 OkHttp 客户端,我在低网络中遇到了套接字关闭异常,在添加以下内容后,如 OkhttpClient 问题已解决

连接池(连接池(0, 1, TimeUnit.NANOSECONDS))
协议(listOf(协议.HTTP_1_1))

        OkHttpClient.Builder().apply {
        .connectionPool(ConnectionPool(0, 1, TimeUnit.NANOSECONDS))
        .protocols(listOf(Protocol.HTTP_1_1))
        connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)
        writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)
        readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
        retryOnConnectionFailure(false)
        }.build()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 失败:java.net.SocketException:套接字关闭改造 的相关文章

  • Android TCP Server 仅在客户端关闭后显示来自 Python 客户端的消息

    我正在使用一些示例代码 它允许我从 Python 客户端向 Android 服务器 TCP 发送消息 但该消息仅在客户端关闭后才会显示在 Android 模拟器上 我可能缺少 tcp 套接字背后的一些基本理解 第一次使用和实现 我的主要目的
  • 我所有的布局 xml 文件都变成了自动生成的文件

    昨天我的应用程序上的所有内容都运行完美 但今天当我打开 Android Studio 时 所有 xml 文件都已损坏 不确定这是否是正确的术语 每个人都是这样的 我今天遇到了同样的问题 下面是我所做的几个步骤 我取得了成功来解决这个问题 只
  • React Native 检查平板电脑或屏幕是否以英寸为单位

    我为平板电脑和移动设备建立了不同的渲染逻辑 我想知道是否有办法获取屏幕尺寸 以英寸为单位 或者甚至可能是任何模块自动检测设备是否是平板电脑 我没有直接使用尺寸 API 来获取屏幕分辨率的原因是 许多 Android 平板电脑的分辨率低于许多
  • Flutter - 每次应用程序重新启动后保留变量的值

    在我的一页上 我希望我的用户从一个变量上的默认文本开始 codeDialog 然后我希望他们更改该文本 之后他们编写的文本将成为我的新默认文本 遗憾的是我无法让它发挥作用 现在 当我重新启动应用程序并打开该屏幕时 它会重置为null 我认为
  • 按大小、日期、名称等在回收器视图中排序并记住选择

    我正在制作图库应用程序 我想为其添加排序功能 我可以使用以下命令在运行时对项目进行排序Comparator但问题是 每当我退出应用程序时 列表都会再次从数据库中出来 并且所有列表都未排序 我想在我的应用程序中提供按日期 大小 名称等排序的选
  • 使用选项卡式活动中的捆绑包将值从活动传递到片段

    我是一个java文盲 但仍在尝试开发一个供我个人使用的应用程序 我从 android studio 的 Tabbed Activity 开始 除了 MainActivity 中的一个片段和一个包之外 大部分没有改变 这是我的代码 主要活动
  • 更改 Android Spinner 布局/设计

    我正在尝试修改设计Spinner http developer android com intl de reference android widget Spinner html小部件 我可以更改背景 但找不到更改右侧箭头图标的方法 有办法
  • 启动时的 Android pin 活动

    我有一个应用程序 它将自身注册为默认启动器 并在启动时自动固定自身 安装应用程序时这一切都正常 它会自行固定 并且只有后退按钮可见 问题是 当设备首次启动时 它无法正确固定 我多次看到一系列 屏幕固定 和 屏幕取消固定 的 toast 主页
  • 我该怎么办:这需要 android.permission.INTERACT_ACROSS_USERS_FULL

    我正在致力于将 micode 的开源指南针集成到我正在制作的应用程序中 我想知道当我在清单中以正确的拼写清楚地说明了此权限错误时 如何修复此权限错误 我仍然需要该许可 这让我很困惑 11 03 13 53 58 241 E AndroidR
  • 如何处理应用程序对 3d party 的依赖

    我当前正在开发的应用程序依赖于第三方应用程序 OIFileManager 我的问题是处理这些依赖关系的一般方法是什么 告诉用户解决它 嵌入 3d party apk 如果其许可证允许 自动解决 也许Android市场有相应的系统 没有自动的
  • Android:多图像密度支持 - 缩放高度宽度和 dpi?

    我有一个 Android 应用程序 我正在尝试添加对不同密度 屏幕尺寸等的支持 我已经在具有 HVGA 支持的模拟器上开发了该应用程序 并使用了我们 iphone 应用程序中的所有图标 自从分辨率以来 结果很好分辨率为 320x480 现在
  • 发送 OneSignal 推送通知时 Android 应用程序崩溃

    Android 应用程序在发送信号推送通知后立即崩溃 我收到这个错误 尝试查看其他 stackoverflow 答案 但没有帮助 请检查下面的代码 build gradle 和错误 不明白为什么它不起作用 P 请检查下面的代码 build
  • 如何增加颤振中切屑的宽度

    我想增加宽度Chip 我怎样才能实现这个目标 Chip elevation 6 0 backgroundColor Colors white shape RoundedRectangleBorder borderRadius BorderR
  • Android Lollipop BLE 扫描 - 获取没有重复的外设

    Android Lollipop 引入了一种扫描 BLE 外设的新方法 通过蓝牙扫描仪 http developer android com reference android bluetooth le BluetoothLeScanner
  • 为什么在回收器视图中滚动后值会消失?

    Data before scrolling Data after scrolling 我的应用程序的问题如上图所示 输入数据后 如果我在将项目添加为可滚动后滚动 数据就会消失 作为进一步的解释 有时输入的数据出现在已添加的其他项目中 为了解
  • Kotlin 中是否有类似于 #region #endregion 的语法?

    我知道我可以使用 region endregion 包围 C 中的代码片段 Kotlin 中是否有类似的语法 谢谢 region MyRegion protected void Page Load object sender EventAr
  • Android同步onSensorChanged?

    这是我的问题的后续 Android线程可运行性能 https stackoverflow com questions 36395440 android thread runnable performance 我在理解应用程序的同步方法时遇到
  • ActionBar 中的进度条

    我正在使用一个应用程序 它将在应用程序内部加载一个网站 现在我想在操作栏中添加一个进度栏 而无需向上滑动来抑制功能 像那样 我在用Fragment在我的应用程序中 WebviewFragment public class WebviewFr
  • 如何更改焦点/按下时图像按钮的色调

    我有一个ImageButton在我的应用程序中 当按钮打开时我需要更改图像的色调pressed focused 我有ImageButton设置为获取其src来自 XML 文件 如下所示
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提

随机推荐

  • 如何在 Ruby 中继承抽象单元测试?

    我有两个单元测试 它们应该共享许多常见的测试 但设置方法略有不同 如果我写类似的东西 class Abstract lt Test Unit TestCase def setup field create end def test 1 en
  • 禁用 Android 中的后退按钮

    如何在注销应用程序时禁用 Android 中的后退按钮 如果您打算处理设备上的后退按钮 请重写 onBackPressed 方法并且不执行任何操作 Override public void onBackPressed if shouldAl
  • 仅适用于希伯来语字符的 ng-pattern

    我想用ng pattern验证我的文本输入字段应该只接受希伯来语字符 有时输入没问题 有时由于某种原因被拒绝 第一个字母是验证 第二个字母不是 等等 例子
  • 如何将 ECDSA 密钥转换为 PEM 格式

    我有一个私人原始密钥米以太钱包 with a 密码短语 testwallet 现在我尝试按照此答案使用 OpenSSL 将其转换为 PEM 格式 echo a140bd507a57360e2fa503298c035854f0dcb248be
  • 更改 jupyter 笔记本标签小部件中的字体属性

    我正在尝试修改 python 2 7 中 jupyter 标签小部件的字体属性 粗细 颜色等 作为一个例子 我尝试过以下方法 import ipywidgets as widgets myLabel widgets Label value
  • 调整放置在 byte[] 数组中的图像大小

    放置在 byte 数组中的图像大小 不知道图像的类型 我必须生成另一个 byte 数组 其大小应达到 50kB 我怎样才能进行某种缩放 除非您想进行一些严肃的数学运算 否则您需要将字节数组加载到内存流中 从该内存流加载图像 并使用 Syst
  • Excel公式:如何按大写字母拆分字符串

    使用公式而不是VBA 我想提出一个解决方案来分割由多个单词组成的字符串 该公式应该识别有大写字母的单词并将它们分开 结果将是一个字符串 其中单词之间用 分隔 为了澄清这一点 我们举一个字符串的例子 Nursing StudentStuden
  • 如何限制画布中的拖放区域

    我有一个画布 假设尺寸为 500x600 我在该画布内有一些控件 用户可以通过拖放重新排列控件 但我想限制该画布内的拖放 例如 画布中有一个按钮 用户可以将该按钮拖放到画布内的任何位置 但是 如果用户尝试将按钮拖出画布边界 则它应该停留在画
  • 仅最后一个值在数组中重复

    我正在尝试在 javascript 中用逗号分隔附加一些值 我有这个查询 select boxes dispatch id projects project boxes hardware sum boxnumber as boxnumber
  • JAX-RS 是构建在 Servlet API 之上的吗?如何?

    我一直在读到 JAX RS 是构建在 servlet 之上的 这是字面意思吗 还是仅仅意味着它是一个更高级别的组件 如果是的话 它是如何运作的 JAX RS 是否创建一个解析请求并手动初始化的 servlet Path带注释的类并将修改后的
  • 从包中导出所有隐藏函数

    有没有一种方法可以自动从包中导入所有隐藏函数 即只能通过以下方式访问的函数package fun 事实上 我对给定函数进行了一些修改 该函数使用了相当多的内部函数 我想避免重新输入package 到处 我在看loadNamespace基本函
  • 使用 LibGDX 的法线贴图 GLSL

    我尝试使用 LibGDX 实现法线贴图 因此 当我在顶点着色器中计算漫反射和镜面反射颜色时 我得到了一些积极的结果 至少我这么认为 顶点着色器 attribute vec4 a position attribute vec2 a texCo
  • CONNECTIVITY_CHANGE 在 Android N 的目标中已弃用 [重复]

    这个问题在这里已经有答案了 我收到关于广播接收器已弃用声明的警告
  • 无法使用 PostgreSQL 配置 AspNet.Identity

    我有一个使用 SQL Server 设置的 Web 项目 现在必须将其迁移到 PostgreSQL 我使用实体框架版本 6 0 和最新版本的 Microsoft AspNet Identity 来管理用户凭据 我正在使用 VS2015 和
  • 如何调用使用 NSClassFromString 动态创建的类中的方法?

    我进行动态类加载的原因是因为我正在创建一组可在多个类似项目中使用的文件 因此执行 import 然后正常实例化是行不通的 动态类允许我执行此操作 只要我可以调用这些类中的方法即可 每个项目在 pch 中都有一个不同的 kMediaClass
  • 为什么应用程序池会自动停止? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在使用 IIS 7 0 对我的 MVC 互联网应用程序进行性能测试 有时应用程序池会停止 并且我在浏览器中收到一条错
  • 如何验证 KeyUsage 证书

    我正在尝试验证证书以确保它具有正确的 keyUsage 但不明白如何将我的 X509KeyUsageFlags KeyEncypherment 使用标志指定到此应用程序策略中 这是我到目前为止的代码 还有其他人让这个工作吗 X509Cert
  • 有没有像 Firefox 一样可以保存网站的 Python 脚本?

    当我想保存一些网站时 我厌倦了在 Firefox 中单击 文件 然后单击 页面另存为 Python 有没有脚本可以做到这一点 我想保存图片和css文件 这样当我离线阅读时 它看起来很正常 你可以使用 wget wget m k E 网址 E
  • 如何在 Delphi TStringList 中更快地搜索名称/值对?

    我通过将运行时的所有字符串放入 TStringList 中 在应用程序中实现了语言翻译 procedure PopulateStringList begin EnglishStringList Append CAN T FIND FILE
  • HTTP 失败:java.net.SocketException:套接字关闭改造

    尝试了多种方法仍然面临这个问题 我正在使用 RxJava 和 Retrofit 来完成所有网络操作 下面是我的代码 服务 kt GET v1 contact id fun getContactDetails Path id id Strin