HttpsURLConnection,在使用中发现,如果网络连接不好或没有网络,那么软件就会异常退出,既不执行超时时间,也没办法捕获异常

悟空- ̗̀ ̖́- 2017-09-28 10:59:51
我使用AS开发一个软件,将一些信息自动转发到服务器端,使用的是HttpsURLConnection,在使用中发现,如果网络连接不好或没有网络,那么软件就会异常退出,既不执行超时时间,也没办法捕获异常。
我是想,如果发送不成功时,延时再重试或给出手动处理提示,可是没办法捕获异常,所以也处理不了。关键是逻辑上想不通。求教了~
...全文
593 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
悟空- ̗̀ ̖́- 2017-10-01
  • 打赏
  • 举报
回复
听大家的建议,给连接这块重新建立一个新的线程,果然能够Catch到异常了,呵呵 不过现在要等大概6个我设定的超时时间才会有反应。
AndroidDev2022 2017-09-30
  • 打赏
  • 举报
回复
所有的网络请求/耗时操作均放在子线程中执行
悟空- ̗̀ ̖́- 2017-09-30
  • 打赏
  • 举报
回复
引用 1 楼 xj396282771 的回复:
我觉得你可以用第三方框架试试OkHttp3,我这里做了个DEMO http://download.csdn.net/download/xj396282771/9884999,就很好的解决了你说的网络不好,连接超时无反应的情况
确实能够解决了,我现在用的是httpsURLConnection,因为软件一直用着,暂时不想调整,计划看看能不能在这上完善下。 不过还没看明白,本人小白一个~~
Jing丶無雙 2017-09-30
  • 打赏
  • 举报
回复
都是可以的,以后做新项目再尝试吧
jklwan 2017-09-30
  • 打赏
  • 举报
回复
引用 4 楼 xuexi2 的回复:
10S超时,无论上面设置多少,这个位置都一样。 弄不明白呀~~
ANR了,你主线程放了什么耗时操作了?不会是网络请求没有放到子线程吧?
悟空- ̗̀ ̖́- 2017-09-30
  • 打赏
  • 举报
回复
引用 8 楼 jdfkldjlkjdl 的回复:
所有的网络请求/耗时操作均放在子线程中执行
关键是这个不应该耗时这么长,我是放到一个子线程里面了,收到短信触发的新线程。
悟空- ̗̀ ̖́- 2017-09-30
  • 打赏
  • 举报
回复
这是我研究的第一个Adroid程序,呵呵,小白 我再研究研究
jklwan 2017-09-29
  • 打赏
  • 举报
回复
你发代码,错误日志,不然怎么看
悟空- ̗̀ ̖́- 2017-09-29
  • 打赏
  • 举报
回复
引用 1 楼 xj396282771 的回复:
我觉得你可以用第三方框架试试OkHttp3,我这里做了个DEMO http://download.csdn.net/download/xj396282771/9884999,就很好的解决了你说的网络不好,连接超时无反应的情况
感谢,我下下来试试
悟空- ̗̀ ̖́- 2017-09-29
  • 打赏
  • 举报
回复
引用 2 楼 jklwan 的回复:
你发代码,错误日志,不然怎么看
引用 2 楼 jklwan 的回复:
你发代码,错误日志,不然怎么看
try { URL url = new URL(weburl); HttpsURLConnection httpURLConnection = (HttpsURLConnection) url.openConnection(); SSLContext sc; sc = SSLContext.getInstance("TLS"); sc.init(null, null, new java.security.SecureRandom()); httpURLConnection.setSSLSocketFactory(sc.getSocketFactory()); httpURLConnection.setReadTimeout(7000); httpURLConnection.setConnectTimeout(7000); httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(true); httpURLConnection.setUseCaches(false); httpURLConnection.setRequestMethod("POST"); httpURLConnection.setRequestProperty("Connection", "Keep-Alive"); httpURLConnection.setRequestProperty("Charset", "UTF-8"); httpURLConnection.setRequestProperty("Content-Type", "application/json"); httpURLConnection.setRequestProperty("Accept", "application/json"); httpURLConnection.connect(); 就是到这之后就不行了 运行时出现出现的记录是: 09-29 13:58:22.852 3864-3864/om.dx.util I/System.out: 网络发送开始1 09-29 13:58:32.905 3864-3870/om.dx.util I/zygote: Thread[3,tid=3870,WaitingInMainSignalCatcherLoop,Thread*=0xb2b5ac00,peer=0x12cc0290,"Signal Catcher"]: reacting to signal 3 09-29 13:58:33.007 3864-3870/om.dx.util I/zygote: Wrote stack traces to '/data/anr/traces.txt' 10S超时,无论上面设置多少,这个位置都一样。 弄不明白呀~~
Jing丶無雙 2017-09-29
  • 打赏
  • 举报
回复
我觉得你可以用第三方框架试试OkHttp3,我这里做了个DEMO http://download.csdn.net/download/xj396282771/9884999,就很好的解决了你说的网络不好,连接超时无反应的情况

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧