`

使用HttpURLConnection注意设置超时

    博客分类:
  • java
阅读更多

这几天测试Paypal的支付接口PayflowAPI,发现在通信过程中如果网络中断,那么程序就会挂死。虽然API本身提供了Timeout的设置,但似乎不管用。

经过测试发现,对方的代码实现只是设置了connectTimeout,这样在建立连接的时候如果网络中断,那么超时以后就会报出错误。但如果连接建立以后网络中断,则无法超时。这说明程序本身没有设置readTimeout。

 

正确的方法应当是调用HttpURLConnection的时候设置这两个超时时间。由于第三方的程序无法修改,那么就需要设置JVM变量:

System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
System.setProperty("sun.net.client.defaultReadTimeout", "30000");
 
分享到:
评论
1 楼 greatwqs 2014-05-05  
  

相关推荐

    Java HttpURLConnection超时和IO异常处理

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

    Android使用HttpURLConnection访问网络

    本篇文章将深入探讨如何在Android应用中利用HttpURLConnection访问网络,包括设置请求方法、添加请求头、处理响应以及解决常见问题。 1. HttpURLConnection简介: HttpURLConnection是Java内置的类,它是...

    HttpURLConnection文件下载\httpURLConnection文件下载

    总的来说,这段代码展示了如何利用`HttpURLConnection`进行文件下载的基本步骤,包括创建连接、设置超时、读取和写入数据。注意,实际应用中可能需要考虑更多的异常处理和错误恢复策略,以及更高效的下载策略,如...

    Httpurlconnection

    除了基本的请求和响应处理,HttpURLConnection还支持设置连接超时和读取超时,这对于防止程序在等待响应时阻塞非常重要: ```java connection.setConnectTimeout(5000); // 设置连接超时为5秒 connection....

    android使用HTTPURLconnection/get方法访问HTTP

    3. **设置请求方法**:默认情况下,`HttpURLConnection`使用POST方法,但我们需要设置为GET方法: ```java connection.setRequestMethod("GET"); ``` 4. **设置连接属性**:你可以根据需要设置一些连接属性,如...

    HttpURLConnection 的使用二

    6. **连接超时和读取超时**:`setConnectTimeout()`和`setReadTimeout()`可以设置连接和读取数据的超时时间,防止程序因为长时间等待而阻塞。 7. **使用HTTPS**:通过`URL`对象的`openConnection()`方法,如果URL是...

    AndroidHttpURLConnection发送GET请求

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

    HttpURLConnection用法详解

    通过设置合适的超时时间(connectTimeout、readTimeout)和缓存策略,可以进一步优化性能。 ### 10. 异步处理 虽然HttpURLConnection本身不支持异步操作,但可以通过线程或Java 8的CompletableFuture等技术实现异步...

    java HttpURLConnection 使用示例

    1. 连接超时:可以使用`connection.setConnectTimeout()`和`connection.setReadTimeout()`设置连接和读取超时。 2. 重定向处理:默认情况下,`HttpURLConnection`会自动处理HTTP状态码为3xx的重定向。如果不想自动...

    Http学习之使用HttpURLConnection发送post和get请求 android

    本篇文章主要聚焦于使用`HttpURLConnection`类...总结,本文介绍了使用`HttpURLConnection`在Android中发送GET和POST请求的基本步骤,以及需要注意的关键点。理解这些概念有助于开发者在构建网络功能时做出明智的选择。

    android HttpURLConnection上传图片demo

    需要注意的是,实际应用中可能还需要处理网络异常、超时、重试、权限等问题,以及考虑性能优化,比如压缩图片以减少上传大小,或者使用Gson、OkHttp等库来简化网络请求的处理。这个appdemo应该包含了这些基本的实现...

    Httpurlconnection请求网络数据,使用Android Studio.zip

    4. 设置连接超时和读取超时,以防止程序卡死: ```java connection.setConnectTimeout(15000); connection.setReadTimeout(15000); ``` 5. 对于POST请求,设置请求体和Content-Type: ```java connection....

    httpurlconnection 获取服务器数据并解析

    设置请求方法(GET、POST等)以及连接超时和读取超时,以防止程序长时间无响应。 ```java URL url = new URL("http://example.com/data"); HttpURLConnection connection = (HttpURLConnection) url.openConnection...

    http info, tool, HttpURLConnection

    值得注意的是,HttpURLConnection默认是异步的,但可以通过调用`setDoInput(true)`和`setDoOutput(true)`来启用输入和输出流,以处理POST请求或上传数据。 虽然HttpURLConnection相对简单且轻量级,但在处理复杂的...

    网络请求----HttpURLConnection的get,post和图片加载

    - 连接管理和超时:设置适当的连接超时和读取超时,防止程序挂起。 - 使用HTTPS:如果涉及到敏感信息传输,应使用HTTPS保证通信安全。 5. 性能优化: - 使用连接池:复用HttpURLConnection实例,减少TCP三次握手...

    Android课件(URL+HttpURLConnection).zip

    - 为了提高用户体验,可以设置超时时间,防止网络延迟导致的长时间等待。 - 由于Android的权限机制,需要在Manifest文件中声明`<uses-permission android:name="android.permission.INTERNET" />`。 7. **Android...

    Android开发使用HttpURLConnection进行网络编程详解【附源码下载】

    本文将详细介绍如何在Android中使用HttpURLConnection进行网络编程,包括设置请求方法、获取响应码、处理GET和POST请求以及实现多线程下载,并涉及权限控制和布局文件的使用。 首先,设置请求方法是通过`...

    彻底解决android用HttpUrlConnection与web服务器之间session保持问题

    可以使用`HttpURLConnection.setRequestProperty("Cookie", "JSESSIONID=value")`来设置Cookie。这里的"value"需要替换为实际的Session ID。 2. **处理Cookie**:Android应用需要监听服务器返回的Set-Cookie头,...

    HttpURLConnectionTest_Get_Post(绝对可以用)

    在Java编程语言中,`HttpURLConnection`是处理HTTP请求的标准API,它位于`java.net`包下,提供了发送GET和POST请求的能力。...记得在使用`HttpURLConnection`时,要注意异常处理和资源管理,以保证程序的健壮性和效率。

    利用HttpURLConnection进行手机号段归属地数据采集

    - 通过`HttpURLConnection`,我们可以设置请求方法(GET、POST等)、请求头、超时时间以及处理响应数据。 2. **HTTP请求过程**: - 首先,创建URL对象,通过`openConnection()`方法获取HttpURLConnection实例。 ...

Global site tag (gtag.js) - Google Analytics