`

httpurlconnection超时设置

    博客分类:
  • WEB
阅读更多

1)使用TimedUrlConnection设置超时

 URL   url=new   URL(someurlname);   
  URLConnection   urlconn=url.openConnection();   
  TimedUrlConnection   timeoutconn=new   TimedUrlConnection(urlconn,100000);//time   out:   100seconds   
  boolean   bconnectok=timeoutconn.connect();   
  if(bconnectok==false)   
  {   
  //urlconn   fails   to   connect   in   100seconds   
  }   
  else   
  {   
  //connect   ok   
  } 

 

2)设置系统属性设置超时

System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
System.setProperty("sun.net.client.defaultReadTimeout", "30000"); 

 

 HttpURLConnection是基于HTTP协议的,其底层通过socket通信实现。如果不设置超时(timeout),在网络异常的情况下,可能会导致程序僵死而不继续往下执行。可以通过以下两个语句来设置相应的超时:
System.setProperty("sun.net.client.defaultConnectTimeout", 超时毫秒数字符串);
System.setProperty("sun.net.client.defaultReadTimeout", 超时毫秒数字符串);
其中: sun.net.client.defaultConnectTimeout:连接主机的超时时间(单位:毫秒)
sun.net.client.defaultReadTimeout:从主机读取数据的超时时间(单位:毫秒)

例如:
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
System.setProperty("sun.net.client.defaultReadTimeout", "30000");

       JDK 1.5以前的版本,只能通过设置这两个系统属性来控制网络超时。在1.5中,还可以使用HttpURLConnection的父类URLConnection的以下两个方法:
setConnectTimeout:设置连接主机超时(单位:毫秒)
setReadTimeout:设置从主机读取数据超时(单位:毫秒)

例如:
HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();
urlCon.setConnectTimeout(30000);
urlCon.setReadTimeout(30000);

        需要注意的是,笔者在JDK1.4.2环境下,发现在设置了defaultReadTimeout的情况下,如果发生网络超时,HttpURLConnection会自动重新提交一次请求,出现一次请求调用,请求服务器两次的问题(Trouble)。


文章出处:DIY部落(http://www.diybl.com/course/3_program/java/javajs/2007128/91119_2.html)

分享到:
评论

相关推荐

    Java HttpURLConnection超时和IO异常处理

    主要介绍了Java HttpURLConnection超时和IO异常处理的相关资料,需要的朋友可以参考下

    AndroidHttpURLConnection发送GET请求

    设置连接超时,读取超时的毫秒数,以及服务器希望得到的一些消息头 conn.setConnectTimeout(6*1000); 获取服务器的响应码并进行判断,正确的响应码一般为200 if(conn.getResponseCode() != 200) 调用...

    使用HttpURLConnection

    HttpURLConnection是基于HTTP协议的,其底层通过socket通信实现。如果不设置超时(timeout),在网络异常的情况下,可能会导致程序僵死而不继续往下执行。

    基于HttpURLConnection的封装http请求

    基于HttpURLConnection的封装http请求,进行了https校验忽略,对get和post进行了整合,更方便请求,对header以及超时的进行了可配置化处理,对返回也进行了封装,便于请求结果的处理。

    Android 用HttpURLConnection访问网络的方法

    一、 HttpURLConnection以GET方式访问网络: HttpURLConnection connection = null; try { ... connection = (HttpURLConnection) url.openConnection();...//设置连接服务器超时时间为8秒 connection.setReadT

    android 开发中用json解析客户端与服务器端的代码

    //设置请求超时与请求方式 conn.setReadTimeout(5*1000); conn.setRequestMethod("GET"); //从链接中获取一个输入流对象 InputStream inStream = conn.getInputStream(); //调用数据流处理方法 byte[]...

    安卓第八天笔记--网络编程二

    4.设置连接超时时间conn.setConnectionTimeOut(5000)毫秒5.设置请求方式setRequestMethodGET或者POST要大写6.获取响应码conn.getResponseCode()7.判断是不是200,是200就一切正常8.获取conn.getInputStream(),9.使用...

    HttpClient以及获取页面内容应用

    16. 设置连接超时的能力。 17. 实验性的支持http1.1 response caching。 18. 源代码基于Apache License 可免费获取。 1.3版本 org.apache.http.impl.client.HttpClients 与 org.apache.commons.httpclient....

    android获取(采集)网络图片的例子.rar

    编程思路:首先获取请求的路径,路径为我们想要得到的资源,建立URL对象,抛出异常,得到HttpURLConnection对象,声明请求方式,设置连接超时,得到服务器传回来的数据,相对我们来说输入流,得到数据, 创建一个...

    gcm:来自 https 的 GCM 代码

    GCM 这是来自的 GCM 代码的分支这个 fork 专注于服务器端修复。 现在,它将涵盖: 'Mavenization' 向 HttpURLConnection 添加超时(我不明白为什么这不在上游)

    微信小程序如何获取用户手机号

    最近在做一款微信小程序,需要获取用户手机号,具体步骤...(1)需要写一个HttpUrlConnection工具类: public class MyHttpUrlConnection { private final int mTimeout = 10000; // 超时时间 /** * get访问 */

    Android使用OKHttp包处理HTTP相关操作的基本用法讲解

    Android为我们提供了两种HTTP交互的方式:HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池,已足够满足我们各种HTTP请求的需求。但更高效的使用HTTP 可以让...

    精通ANDROID 3(中文版)1/2

    11.1.7 使用HttpURLConnection  11.1.8 使用AndroidHttpClient  11.1.9 使用后台线程(AsyncTask)  11.1.10 使用AsyncTask处理配置更改  11.1.11 使用DownloadManager获取文件  11.2 使用Android服务  ...

    精通Android 3 (中文版)2/2

    11.1.7 使用HttpURLConnection  11.1.8 使用AndroidHttpClient  11.1.9 使用后台线程(AsyncTask)  11.1.10 使用AsyncTask处理配置更改  11.1.11 使用DownloadManager获取文件  11.2 使用Android服务  ...

    EasyGo:基于Kotlin、OkHttp的声明式网络框架,像写HTML界面一样写网络调用代码

    6、支持配置全局的拦截器,也可以为每个请求单独设置拦截器,对请求进行拦截配置; 7、框架进行了分层设计,请求数据装载层、网络请求层、数据解析层完全解耦分离; 8、网络请求层设计了统一的接口,目前已内置...

Global site tag (gtag.js) - Google Analytics