Android HttpUrlConnection EOFException

2024-03-30

我想知道 Android 上的 HttpUrlConnection 和 POST 请求是否存在已知问题。我们正在经历间歇性的从 Android 客户端发出 POST 请求时出现 EOFExceptions。重试相同的请求最终会成功。这是堆栈跟踪示例:

java.io.EOFException
at libcore.io.Streams.readAsciiLine(Streams.java:203)
at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:579)
at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:827)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)
at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)

有许多类似的错误报告和堆栈溢出的帖子,但我无法理解是否真的存在问题,如果是的话,哪些版本的 Android 受到影响以及建议的修复/解决方法是什么。

以下是我参考的一些类似报告:

  • Android HttpsUrlConnection eofException https://stackoverflow.com/questions/15411213/android-httpsurlconnection-eofexception
  • Android HttpURLConnection 抛出 EOFException https://stackoverflow.com/questions/12319194/android-httpurlconnection-throwing-eofexception
  • HttpURLConnection getInputStream() 中的 EOFException 和 FileNotFoundException https://stackoverflow.com/questions/17967731/eofexception-and-filenotfoundexception-in-httpurlconnection-getinputstream
  • https://code.google.com/p/google-http-java-client/issues/detail?id=213 https://code.google.com/p/google-http-java-client/issues/detail?id=213
  • https://code.google.com/p/android/issues/detail?id=29509 https://code.google.com/p/android/issues/detail?id=29509
  • https://code.google.com/p/google-http-java-client/issues/detail?id=230 https://code.google.com/p/google-http-java-client/issues/detail?id=230
  • https://code.google.com/p/android/issues/detail?id=41576 https://code.google.com/p/android/issues/detail?id=41576

这是一个潜在的 Android 框架修复

  • https://android.googlesource.com/platform/libcore/+/19aa40c81c48ff98ccc7272f2a3c41479b806376 https://android.googlesource.com/platform/libcore/+/19aa40c81c48ff98ccc7272f2a3c41479b806376

我确实知道 Froyo 之前的连接池中存在中毒连接问题,但这些问题仅发生在新的 ICS+ 设备上。如果后来的设备出现问题,我会期待某种关于该问题的官方 Android 文档。


我们的结论是 Android 平台存在问题。我们的解决方法是捕获 EOFException 并重试请求 N 次。下面是伪代码:

private static final int MAX_RETRIES = 3;

private ResponseType fetchResult(RequestType request) {
    return fetchResult(request, 0);
}

private ResponseType fetchResult(RequestType request, int reentryCount) {
    try {
        // attempt to execute request
    } catch (EOFException e) {
        if (reentryCount < MAX_RETRIES) {
            fetchResult(request, reentryCount + 1);
        }
    }
    // continue processing response
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android HttpUrlConnection EOFException 的相关文章

  • Android Studio:lambda 不起作用[重复]

    这个问题在这里已经有答案了 当尝试使用 lambda 表达式时 我遇到了一些 Gradle 构建错误 错误 41 100 错误 source 1 7 不支持 lambda 表达式 使用 source 8 或更高版本来启用 lambda 表达
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 如何将画廊意图中的“打开”更改为“完成”?

    我使用以下意图打开画廊来选择多个图像和视频 Intent intent new Intent intent setType image video intent putExtra Intent EXTRA ALLOW MULTIPLE tr
  • React Native Android 发布 apk 是调试,而不是发布

    我有一个现有的 Android 应用程序 我已根据以下内容将 React Native v0 30 活动添加到项目中docs http facebook github io react native releases next docs i
  • 在 WebView 中完成 AdBlock

    我即将在我的 Android 应用程序中推出 WebView AdBlocking 我想知道这是否会有效地阻止广告 或者在 Webview 本身内是否还有更多工作要做 我尚未修改 基本上我有一个存储在 Android 资产中的主机文件 其中
  • 使用 Android 播放任意音调

    有没有办法让Android发出任意频率的声音 意思是 我不想预先录制声音文件 我环顾四周 音调发生器 http developer android com reference android media ToneGenerator html
  • 监听什么来检测 Android 中的请勿打扰模式更改?

    我希望我的应用程序在手机设置为请勿打扰模式 仅限闹钟 仅限优先级或完全静音 时显示通知 通过聆听 这效果非常好android media RINGER MODE CHANGED在快速设置中检查此模式并在已选择的选项卡中选择模式时 但是 当选
  • Android Studio - 如何关闭“单词‘word’中的拼写错误?”

    当命名变量或给出字符串参数时 Android Studio 似乎对我如何标记事物有问题 有办法把它关掉吗 是的 打开Preferences gt Editor gt Inspections gt Spelling gt 关闭Typo并按OK
  • 从多个选项卡中的编辑文本字段获取文本

    我正在尝试创建一个使用选项卡作为输入表单的 Android 应用程序 基本上 我希望对其进行设置 以便用户可以在一个选项卡上输入一些信息 然后提交该信息 或者转到另一个选项卡并输入更多信息 然后从两个选项卡提交信息 我正在使用操作栏和片段来
  • window.onbeforeunload 在 Android Chrome 上不会触发 [alt.解决方案?]

    我开发了一个简单的聊天应用程序 我正在使用 window onbeforeunload当有人关闭选项卡 浏览器时 基本上是当用户离开房间时 通知其他用户 这是我的代码 scope onExit function scope chatstat
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • Ionic Facebook Api 无效密钥哈希

    我无法让我的应用程序允许 Facebook 登录 每次用户尝试登录 Facebook 并使用他们的 FB 验证我的应用程序时 都会出现以下错误 无效的密钥哈希 它们的密钥哈希 xxxxxxxxxx 与任何存储的密钥哈希不匹配 配置您的应用程
  • ACCESS_BACKGROUND_LOCATION 不适用于低于 Q (29) 的 Android 版本

    我的应用程序面向 Android API 28 根据文档 https developer android com preview privacy location target android 10 我应该要求ACCESS BACKGROU
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • 更改Android菜单的背景颜色[重复]

    这个问题在这里已经有答案了 我正在尝试将标准浅灰色更改为浅绿色 似乎没有一个简单的方法可以做到这一点 例如 通过 Android 主题 但我找到了一个解决方法 如本页所述 http tinyurl com 342dgn3 http tiny
  • 如何在Android中解析xml类型的HTTPResponse

    我有一个 Android 应用程序 我使用 POST 方法来获取响应 这是我的代码 HttpResponse httpResponse httpclient execute httppost HttpEntity resEntity htt
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • Android 中的 Google Places API - 适用于个人用户的 API_KEY

    我已经浏览了与在 Android 应用程序中使用 Places API 相关的 Android 文档和其他博客 到处都建议使用 API KEY 来调用 REST 服务 API KEY 在整个项目 应用程序中都是相同的 每天的请求数限制为 1

随机推荐

  • 为什么 Hadoop 中正确的缩减数量是 0.95 或 1.75?

    hadoop 文档指出 正确的归约次数似乎是 0 95 或 1 75 乘以 mapred tasktracker reduce tasks maximum 0 95 所有的减少都可以立即启动并开始 地图完成时传输地图输出 用1 75更快 节
  • UML 类图概念、规范、实现

    我目前正在阅读 Martin Fowler 的 UML Distilled 我刚刚介绍了有关类图的部分 他在其中强调了在对类图进行建模之前理清自己的观点的必要性 然而 在实际绘制类图时 我对它的实际外观有点困惑 例如 我理解理论含义会改变关
  • Symfony2 自定义表单字段

    我对 Symfony 很陌生 所以问题可能看起来有点简单 但我需要帮助 我已经生成了新的捆绑包 我添加了一条新路线Me MyBundle Resources config routing yml my homepage pattern de
  • jQuery:append()对象,用delay()删除()它

    这有什么问题吗 body append div class message success Upload successful div message delay 2000 remove 我想将成功消息附加到我的 html 文档中 但只持续
  • 通过反射获取对象

    我正在寻找 C 中的机制 如下所示 Car car1 Car car2 Car car Car SomeMechanism Get car1 car1 和 car2 是字段 所以我想得到一些带有反射的对象 而不是类型 我怎样才能在c 中做到
  • 如何忽略 Web 浏览器中的脚本错误

    当我关闭使用网络浏览器的应用程序时会发生什么 以下网址使用flash播放器 一切正常 此错误在应用程序关闭时显示 我该如何忽略它 我知道为时已晚 但我觉得我对这个问题有一个聪明的答案 使用这个 它对我来说很有效 webBrowser Scr
  • 多重处理:类型错误:“int”对象不可迭代

    我正在使用multiprocessingPython 3 中的模块 但由于某种原因 它不断抛出TypeError int object is not iterable当我运行程序时 这就是我所做的 def main i global url
  • mod_wsgi 无法连接 WSGI 守护进程

    我正在使用 Easy apache 4 mod wsgi 和 Python 3 5 当我在服务器中调用 Django 项目时 出现以下错误 13 Permission denied mod wsgi pid 24223 Unable to
  • 平移多个 Y 轴之一以获取高图

    我是 highchart javascript 的新手 而且我没有样品来展示它 但我见过图表有两个 Y 轴 左轴和右轴 我可以上下拖动一个轴而不影响另一个轴 该图表可能包含一些系列数据 我见过构建的插件 http www highchart
  • 非常快的无限循环,不阻塞 I/O

    有没有更快的替代方案window requestAnimationFrame 对于不阻塞 I O 的无限循环 我在循环中所做的事情与动画无关 所以我不在乎下一帧何时准备好 并且我已经读过window requestAnimationFram
  • intellij IDEA 中每个模块的不同存储库

    我不确定如何为 IDEA 项目中的每个不同模块选择不同的 git 存储库 我没有看到任何选项 所有 git 选项似乎只与一个 git 存储库相关 有没有办法区分它们 所以 全部在同一个项目内 Module A gt repo A Modul
  • android apache poi-ooxml 导致构建错误 'app:transformClassesWithDesugarForDebug'

    我的应用程序需要实现 Excel 创建和下载 我使用 Apache POI 的 HSSFWorkbook 来实现该功能 应用程序成功创建了所需的 Excel xls 输出 但是 如果我在 gradle 中包含 apache poi ooxm
  • 我想要一个提交按钮 该按钮提交的值与按钮 上显示的值不同 和
  • 如何在 Linux 上安全地、事务性地替换文件?

    我能想到的替换文件内容的最天真 最糟糕的方法是 f open file txt w f write stuff f close 显然 如果该操作在关闭之前的某个时刻失败 您将丢失原始文件的内容 而不一定完成新内容 那么 什么是完全正确的方法
  • Chef deploy_resource 私有存储库、ssh 部署密钥和 ssh_wrapper

    我在让我的厨师食谱克隆私人仓库时遇到了很多麻烦 好吧 我昨天还可以用 但是在 清理 我的 Vagrant 盒子六次之后 我把它弄坏了 正如你可能猜到的那样 我是一名厨师新手 按照此处的deploy resource指南 我创建了我的depl
  • 检查 NSNumber 是否为分数

    检查是否存在的最佳方法是什么NSNumber是分数吗 NumberIsFraction 0 NO NumberIsFraction 0 5 YES NumberIsFraction 1 0 NO 在边境案件处理和绩效方面 最佳 避免转换为具
  • MongoDB 作为时间序列数据库

    我正在尝试使用 mongodb 作为时间序列数据库 并且想知道是否有人可以建议如何最好地针对该场景进行设置 时间序列数据与股票价格历史非常相似 我收集了来自不同机器的各种传感器的数据 有数十亿个时间戳的值 我想问以下问题 最好来自数据库而不
  • 如何在命名类别中声明私有属性?

    我知道可以通过将类的私有属性放入实现中声明的类的未命名类别中来声明类的私有属性 m 该类的文件 那是not我想做的事 我正在处理一个类的命名类别 该类别为该类添加了一些功能 对于此功能 在我的类别中使用私有属性会对我有很大帮助 因此实现此功
  • 如何修复 C# 中的“使用未分配的局部变量”[重复]

    这个问题在这里已经有答案了 我是 C 新手 我最后的编程语言是 C 我不断收到 Use of unassigned local variable average 这average与之相关的是average 10 using System u
  • Android HttpUrlConnection EOFException

    我想知道 Android 上的 HttpUrlConnection 和 POST 请求是否存在已知问题 我们正在经历间歇性的从 Android 客户端发出 POST 请求时出现 EOFExceptions 重试相同的请求最终会成功 这是堆栈