`
m635674608
  • 浏览: 5027638 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java HttpURLConnection超时问题

    博客分类:
  • java
 
阅读更多

Java中可以使用HttpURLConnection来请求WEB资源。
HttpURLConnection对象不能直接构造,需要通过URL.openConnection()来获得HttpURLConnection对象,示例代码如下:
String szUrl = “http://www.ee2ee.com/”;
URL url = new URL(szUrl);
HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();

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.defaultReadTime

Java中可以使用HttpURLConnection来请求WEB资源。
HttpURLConnection对象不能直接构造,需要通过URL.openConnection()来获得HttpURLConnection对象,示例代码如下:
String szUrl = “http://www.ee2ee.com/”;
URL url = new URL(szUrl);
HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();

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)。我认为这是JDK1.4.2的一个bug。在JDK1.5.0中,此问题已得到解决,不存在自动重发现象。 out”, “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)。我认为这是JDK1.4.2的一个bug。在JDK1.5.0中,此问题已得到解决,不存在自动重发现象。

 

http://www.cnblogs.com/jifeng/archive/2010/04/08/1707576.html

分享到:
评论

相关推荐

    Java HttpURLConnection超时和IO异常处理

    下面将详细讨论`HttpURLConnection`的超时设置、IO异常处理以及如何应对这些问题。 1. **超时设置**: - `setConnectTimeout(int timeout)`:这个方法用于设置建立网络连接的超时时间,单位为毫秒。如果在指定时间...

    java HttpURLConnection 使用示例

    在本文中,我们将深入探讨`HttpURLConnection`的使用,包括GET和POST请求的实现,以及如何处理可能出现的乱码问题。 一、`HttpURLConnection`概述 `HttpURLConnection`是`URLConnection`的子类,专门用于处理HTTP...

    HttpURLConnection文件下载\httpURLConnection文件下载

    `java.net`包含了网络相关的类,如`HttpURLConnection`;`java.util`则提供了`Vector`类,用于存储和管理对象。 代码定义了一个名为`UrlDownload`的类,它包含了两个`Vector`对象:`vDownLoad`用于存储待下载的URL...

    Java HttpURLConnection使用方法详解

    Java HttpURLConnection 使用方法详解 Java HttpURLConnection 是 Java 中用于发送 HTTP 请求的类,通过使用 HttpURLConnection,可以发送 GET 请求和 POST 请求,並获取服务器的响应结果。下面是使用 Java ...

    java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

    `HttpURLConnection`是Java标准库提供的一种轻量级的HTTP客户端,它允许我们在后台代码中发送GET和POST请求。本篇文章将深入讲解如何使用`HttpURLConnection`类来模拟浏览器请求,并通过实例展示其在接口调用中的...

    使用HttpURLConnection下载图片

    在Java编程中,`HttpURLConnection`是用于处理HTTP协议的核心类,它提供了向网络资源发起请求并接收响应的能力。在本例中,我们将探讨如何使用`HttpURLConnection`来下载图片,这是一个基础但实用的网络编程任务。...

    java超时控制

    通过阅读和分析提供的文档和文本(例如`java超时限制.doc`,`java超时限制2.doc`,`java超时限制3.txt`,`java超时限制2.txt`,`java超时限制4.txt`,`java超时限制.txt`),我们可以获取更多关于Java超时控制的具体...

    CUrl类是以命令行工具CUrl为参考使用标准Java的HttpURLConnection实现的Http工具类

    CUrl类是一个基于Java的HttpURLConnection实现的网络通信工具,其设计灵感来源于命令行工具CUrl。CUrl命令行工具广泛用于在各种协议下发送数据,包括HTTP、HTTPS、FTP等,而CUrl类则是将这种功能移植到了Java平台,...

    android使用Java原生httpUrlConnection进行get请求

    在这个场景下,我们将详细探讨如何使用Java原生的HttpURLConnection实现一个GET请求。 首先,我们需要了解GET请求的基本原理。GET请求是最常见的HTTP方法,用于从服务器获取资源。它将参数附加到URL中,以便服务器...

    java 访问网络 下载文件 爬虫 超时处理解决方案

    在IT领域,尤其是在Java编程中,访问网络、下载文件、实现爬虫功能以及处理超时问题是非常关键的技术点。本文将深入探讨如何在Java中有效处理这些方面的问题,特别是超时处理解决方案,这对于构建高效、稳定的网络...

    Httpurlconnection

    HttpURLConnection都提供了解决这些问题的方法,例如通过`setInstanceFollowRedirects(boolean)`控制自动重定向,或者使用`SSLSocketFactory`和`TrustManager`处理安全连接。 总的来说,HttpURLConnection是Java中...

    java访问https网址下载文件(含证书)

    使用`URL`类的`openConnection()`方法创建`HttpURLConnection`对象,然后设置连接属性,如设置连接和读取超时、禁用自动重定向等。 3. **处理重定向**: HTTPS请求可能涉及重定向,你需要检查`HttpURLConnection`...

    HttpURLConnection用法详解

    HttpURLConnection是Java标准库中的一个类,它是Java访问HTTP服务器的基础。这个类是Java网络编程的重要组成部分,主要用于发送HTTP请求并接收响应。在本文中,我们将深入探讨HttpURLConnection的使用方法,帮助...

    使用HttpURLConnection

    默认情况下,`HttpURLConnection`没有设置超时,如果网络出现问题,程序可能会无限制地等待响应,导致程序阻塞。我们需要分别设置连接超时(connectTimeout)和读取超时(readTimeout),确保在一定时间内未得到响应...

    HttpURLConnection servlet 多文件参数 断点上传

    在IT行业中,网络编程是不可或缺的一部分,而HTTP协议作为互联网上的通信标准,其在Java中的实现通常是通过`HttpURLConnection`类。本知识点将深入探讨如何使用`HttpURLConnection`与Servlet协同工作,处理多文件...

    HttpURLConnection使用总结示例源码

    HttpURLConnection是Java标准库中的一个类,它是HTTP协议的基础实现,用于在客户端和服务器之间建立网络连接并进行数据传输。这个类是Java程序员在进行网络编程时常用的工具,尤其是在发送HTTP请求和处理响应时。本...

    远程连接服务器HttpURLConnection

    在实际应用中,我们还需要处理错误,比如网络中断、超时等问题,以及正确关闭所有打开的资源。另外,`HttpURLConnection`支持设置超时、处理重定向等高级特性。 至于文件`jyWebClient`和`jyWebService`,它们可能是...

    HttpUrlConnection实例

    在Android和Java开发中,`HttpURLConnection`是一个用于与HTTP服务器进行交互的API,它是Java标准库的一部分。这个实例主要关注如何使用`HttpURLConnection`来获取JSON格式的数据,这是一个常见的任务,特别是在移动...

    AsyncTask结合HttpUrlConnection的例子

    在Android开发中,异步处理是非常重要的一环,特别是在与服务器进行数据交互时,为了保持UI线程的流畅性,避免...在实际开发中,你可能还需要考虑异常处理、连接重试、缓存策略等问题,以提高应用的健壮性和用户体验。

    Android 简单使用 HttpURLConnection

    在Android开发中,网络通信是应用必不可少的一部分,`HttpURLConnection`是Java标准库提供的一种用于HTTP请求的API,它在Android SDK中也被广泛使用。本篇文章将深入探讨如何在Android中简单使用`HttpURLConnection`...

Global site tag (gtag.js) - Google Analytics