zoukankan      html  css  js  c++  java
  • HttpURLConnection连接超时问题

    1、问题描述

    这几天测试重构后的下载框架,发现在下载过程中如果网络中断或网络较差,个别应用的下载就会阻塞卡住,一直卡在 “正在下载 xx%”。
     

    2、问题排查和定位

    思考:网络差不应该报网络异常的错误或者直接抛timeout异常吗?所以马上去检查Http请求的地方:发现在DownloadThread中使用HttpURLConnection进行网络请求时只是设置了connectTimeout,这样在建立连接的时候如果网络中断,那么超时以后就会报出错误,这里是没有问题的。会不会是还少设置了其他参数的原因呢?
     
    于是赶紧去查阅资料:
    ConnectTimeout只有在网络正常的情况下才有效,而当网络不正常时,ReadTimeout才真正的起作用,即IdIOHandlerStack 里的 WaitFor 是受ReadTimeout限制的,因此,这2个属性应该结合实用。
     
    connect timeout 是建立连接的超时时间;
    read timeout,是传递数据的超时时间。
     
    正确的方法应当是调用HttpURLConnection的时候同时设置这两个超时时间。
    一看代码,果然漏了setReadTimeout。。。。。OMG 。。。
     

    3、解决方案

    同时设置这两个超时时间:
    HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();
    urlCon.setConnectTimeout(20*1000);
    urlCon.setReadTimeout(20*1000); 
     
    参考连接:https://blog.csdn.net/jackson_wen/article/details/51923514
  • 相关阅读:
    POJ3320 Jessica's Reading Problem
    POJ3320 Jessica's Reading Problem
    CodeForces 813B The Golden Age
    CodeForces 813B The Golden Age
    An impassioned circulation of affection CodeForces
    An impassioned circulation of affection CodeForces
    Codeforces Round #444 (Div. 2) B. Cubes for Masha
    2013=7=21 进制转换
    2013=7=15
    2013=7=14
  • 原文地址:https://www.cnblogs.com/xiohao/p/8854113.html
Copyright © 2011-2022 走看看